JIS X 3017:2013 プログラム言語Ruby | ページ 33

                                                                                            155
X 3017 : 2013 (ISO/IEC 30170 : 2012)
a) lockが与えられている場合,次の手順を行う。
1) レシーバのそれぞれの要素について,添字順に,その要素の添字を値とするIntegerクラスのイ
ンスタンスを唯一の実引数としてblockを呼び出す。
2) レシーバを返す。
b) lockが与えられていない場合,このメソッドの動作は未規定とする。
15.2.12.5.12 Array#empty・
empty・
可視性 : public
動作 :
a) レシーバが空の場合,trueを返す。
b) そうではない場合,falseを返す。
15.2.12.5.13 Array#first
first(*args)
可視性 : public
動作 :
a) rgsの長さが0の場合,次の手順を行う。
1) レシーバが空の場合,nilを返す。
2) そうではない場合,レシーバの最初の要素を返す。
b) rgsの長さが1の場合,次の手順を行う。
1) 唯一の実引数がIntegerクラスのインスタンスである場合,nをその実引数の値とする。そうでは
ない場合,このメソッドの動作は未規定とする。
2) が0より小さい場合,ArgumentErrorクラスの直接のインスタンスを例外として発生させる。
3) そうではない場合,n及びレシーバの長さのうちの小さい方を,Nとする。
4) レシーバの最初のN個の要素を同じ順序で保持するArrayクラスのインスタンスを作って返す。
c) rgsの長さが1より大きい場合,ArgumentErrorクラスの直接のインスタンスを例外として発生さ
せる。
15.2.12.5.14 Array#index
index(object=nil)
可視性 : public
動作 :
a) bjectが与えられた場合,次の手順を行う。
1) レシーバのそれぞれの要素Eについて,添字順に,次の手順を行う。
i) Eに対してobjectを実引数として “==” メソッドを呼び出す。
ii) 呼出し結果の値が真の場合,Eの添字を値にもつIntegerクラスのインスタンスを返す。
2) 手順a) 1) i)でIntegerクラスのインスタンスが返されなかった場合,nilを返す。
b) そうではない場合,このメソッドの動作は未規定とする。
15.2.12.5.15 Array#initialize
initialize(size=0, obj=nil, &block)
可視性 : private

――――― [JIS X 3017 pdf 161] ―――――

156
X 3017 : 2013 (ISO/IEC 30170 : 2012)
動作 :
a) izeがIntegerクラスのインスタンスである場合,nをsizeの値とする。そうではない場合,このメ
ソッドの動作は未規定とする。
b) が0未満の場合,ArgumentErrorクラスの直接のインスタンスを例外として発生させる。
c) レシーバの全ての要素を削除する。
d) が0の場合,処理系定義の値を返す。
e) が0より大きい場合,次の手順を行う。
1) lockが与えられている場合,次の手順を行う。
i) kを0とする。
ii) を値とするIntegerクラスのインスタンスを唯一の実引数としてblockを呼び出す。呼出し結
果の値をレシーバの末尾に追加する。
iii) を1増加させる。kがnに等しくなった場合,この処理を終了させる。そうではない場合,手順
e) 1) i)から繰り返す。
2) そうではない場合,objをレシーバの末尾にn回追加する。
3) 処理系定義の値を返す。
15.2.12.5.16 Array#initializecopy
initializecopy(original)
可視性 : private
動作 :
a) riginalがArrayクラスのインスタンスでない場合,このメソッドの動作は未規定とする。
b) レシーバの全ての要素を削除する。
c) riginalの全ての要素を,同じ順序でレシーバの末尾に追加する。
d) 処理系定義の値を返す。
15.2.12.5.17 Array#join
join(sep=nil)
可視性 : public
動作 :
a) epがnilでもStringクラスのインスタンスでもない場合,このメソッドの動作は未規定とする。
b) tringクラスの空の直接のインスタンスSを作る。
c) レシーバのそれぞれの要素Xについて,添字順に,次の手順を行う。
1) epがnilでなく,かつ,Xがレシーバの最初の要素でない場合,sepの内容をSの末尾に追加する。
2) がStringクラスのインスタンスの場合,Xの内容をSの末尾に追加する。
3) がArrayクラスのインスタンスの場合,次の手順を行う。
i) Xがレシーバである,すなわち,レシーバが自分自身を含んでいる場合,処理系定義の文字列を
Sの末尾に追加する。
ii) そうではない場合,joinメソッドをXに対しsepを実引数として呼び出し,その結果である
Stringクラスのインスタンスの内容をSの末尾に追加する。
4) そうではない場合,このメソッドの動作は未規定とする。
d) を返す。

――――― [JIS X 3017 pdf 162] ―――――

                                                                                            157
X 3017 : 2013 (ISO/IEC 30170 : 2012)
15.2.12.5.18 Array#last
last(*args)
可視性 : public
動作 :
a) rgsの長さが0の場合,次の手順を行う。
1) レシーバが空の場合,nilを返す。
2) そうではない場合,レシーバの最後の要素を返す。
b) rgsの長さが1の場合,次の手順を行う。
1) 唯一の実引数がIntegerクラスのインスタンスである場合,nをその実引数の値とする。そうでは
ない場合,このメソッドの動作は未規定とする。
2) が0未満の場合,ArgumentErrorクラスの直接のインスタンスを例外として発生させる。
3) そうではない場合,Nをn及びレシーバの長さのうち小さい方とする。
レシーバの末尾からN個の要素を同じ順序で保持するArrayクラスのインスタンスを作って返す。
c) rgsの長さが1より大きい場合,ArgumentErrorクラスの直接のインスタンスを例外として発生さ
せる。
15.2.12.5.19 Array#length
length
可視性 : public
動作 : レシーバの保持する要素の個数を値とするIntegerクラスのインスタンスを返す。
15.2.12.5.20 Array#map!
map!(&block)
可視性 : public
動作 : collect!メソッドと同じとする(15.2.12.5.7参照)。
15.2.12.5.21 Array#pop
pop
可視性 : public
動作 :
a) レシーバが空の場合,nilを返す。
b) そうではない場合,レシーバの最後の要素を削除し,その要素を返す。
15.2.12.5.22 Array#push
push(*items)
可視性 : public
動作 :
a) temsのそれぞれの要素を,添字順に,レシーバの末尾に追加する。
b) レシーバを返す。
15.2.12.5.23 Array#replace
replace(other)
可視性 : public
動作 : initializecopyメソッドと同じとする(15.2.12.5.16参照)。

――――― [JIS X 3017 pdf 163] ―――――

158
X 3017 : 2013 (ISO/IEC 30170 : 2012)
15.2.12.5.24 Array#reverse
reverse
可視性 : public
動作 : レシーバの全ての要素を逆順に保持するようなArrayクラスのインスタンスを作って返す。
15.2.12.5.25 Array#reverse!
reverse!
可視性 : public
動作 : レシーバの全ての要素を逆順に並べ替え,レシーバを返す。
15.2.12.5.26 Array#rindex
rindex(object=nil)
可視性 : public
動作 :
a) bjectが与えられた場合,次の手順を行う。
1) レシーバのそれぞれの要素Eについて,添字の逆順に,次の手順を行う。
i) Eに対してobjectを実引数として “==” メソッドを呼び出す。
ii) 呼出し結果の値が真の場合,Eの添字を値にもつIntegerクラスのインスタンスを返す。
2) 手順a) 1) i)でIntegerクラスのインスタンスが返されなかった場合,nilを返す。
b) そうではない場合,このメソッドの動作は未規定とする。
15.2.12.5.27 Array#shift
shift
可視性 : public
動作 :
a) レシーバが空の場合,nilを返す。
b) そうではない場合,レシーバの最初の要素を削除してその要素を返す。
15.2.12.5.28 Array#size
size
可視性 : public
動作 : lengthメソッドと同じとする(15.2.12.5.19参照)。
15.2.12.5.29 Array#slice
slice(*args)
可視性 : public
動作 : “[]” メソッドと同じとする(15.2.12.5.4参照)。
15.2.12.5.30 Array#unshift
unshift(*items)
可視性 : public
動作 :
a) temsのそれぞれの要素を,添字の逆順に,レシーバの先頭に追加する。
b) レシーバを返す。

15.2.13 Hash

――――― [JIS X 3017 pdf 164] ―――――

                                                                                            159
X 3017 : 2013 (ISO/IEC 30170 : 2012)
15.2.13.1 概要
Hashクラスのインスタンスは,ハッシュ,すなわち,キーと値との組の集合を表す。
キーと値との組を一つももたないHashクラスのインスタンスは空であるという。Hashクラスのイン
スタンスは,Classクラスのnewメソッドの手順b)によって作られたとき,空でなければならない。
Hashクラスのインスタンスは,あるキーに対して二つ以上のキーと値との組をもってはならない。言
い換えれば,Hashクラスの一つのインスタンスの中の個々のキーはそれぞれ異なる。
Hashクラスのインスタンスは次の属性をもつ。
省略時の値又はproc : この属性の値は,次のいずれかである。
− 省略時の値。これは,指定されたキーがHashクラスのインスタンス内に存在しなかった場合
に “[]” メソッドによって返される。
− 省略時のproc。これは,Procクラスのインスタンスであり,指定されたキーがHashクラス
のインスタンス内に存在しなかった場合に “[]” メソッドが返す値を生成するために使われ
る。
Hashクラスのインスタンスは,省略時の値と省略時のprocとを同時にもってはならない。
二つのキーK1及びK2について,“K1 ≡ K2” という表現は,二つのキーが同値である,すなわち次の全て
の条件が成り立つことを示す。
− eql・メソッドを,K1に対し,K2を唯一の実引数として呼び出すと,真が返される。
− K1及びK2に対しhashメソッドを呼び出した結果の値をそれぞれ,H1及びH2とする。
H1とH2とが,同じ整数を表すIntegerクラスのインスタンスである。
規格適合処理系は,ある整数の範囲を定め,H1又はH2の値がこの範囲外であるときに,H1又はH2
を,この範囲内の値を表すIntegerクラスのインスタンスに変換してよい。変換後のインスタンス
をそれぞれ,I1及びI2とする。
I1とI2とが同じ整数を表す。
H1又はH2がIntegerクラスのインスタンスでない場合は,K1 ≡ K2であるかどうかは処理系定義
とする。
注記 K1 ≡ K2とK2 ≡ K1とは,等価ではない。
15.2.13.2 直接のスーパークラス
Objectクラス
15.2.13.3 インクルードモジュール
Hashクラスは,次のモジュールをインクルードする。
− Enumerable
15.2.13.4 インスタンスメソッド
15.2.13.4.1 Hash#==
==(other)
可視性 : public
動作 :
a) therがHashクラスのインスタンスでない場合,このメソッドの動作は処理系定義とする。
b) 次の全ての条件が成り立つ場合,trueを返す。
− レシーバとotherとが,同じ個数のキーと値との組をもつ。

――――― [JIS X 3017 pdf 165] ―――――

次のページ PDF 166

JIS X 3017:2013の引用国際規格 ISO 一覧

  • ISO/IEC 30170:2012(IDT)

JIS X 3017:2013の国際規格 ICS 分類一覧