180
X 3017 : 2013 (ISO/IEC 30170 : 2012)
c) を返す。
15.2.17.4.4 Proc#clone
clone
可視性 : public
動作 :
a) インスタンス変数の束縛をもたない,レシーバと同じクラスのインスタンスを作り,これをOとする。
b) レシーバのそれぞれのインスタンス変数束縛Bについて,同じ名前及び値をもつ変数束縛をOのイン
スタンス変数束縛の集合内に作る。
c) レシーバが特異クラスと関連付けられている場合,Eoをその特異クラスとし,次の手順を実行する。
1) 特異クラスEnを作る。Enの直接のスーパークラスは,Eoの直接のスーパークラスとする。
2) oのそれぞれの定数束縛Bv1について,同じ名前及び値をもつ変数束縛をEnの定数束縛の集合内に
作る。
3) oのそれぞれのクラス変数束縛Bv2について,同じ名前及び値をもつ変数束縛をEnのクラス変数束
縛の集合内に作る。
4) oのインスタンスメソッドのそれぞれの束縛Bmについて,同じ名前及び値をもつメソッド束縛を
Enのインスタンスメソッド束縛の集合内に作る。
5) とEnとを関連付ける。
d) のブロック属性を,レシーバのブロック属性の値とする。
e) を返す。
15.2.17.4.5 Proc#dup
dup
可視性 : public
動作 :
a) インスタンス変数の束縛をもたない,レシーバと同じクラスのインスタンスを作り,これをOとする。
b) のブロック属性を,レシーバのブロック属性とする。
c) を返す。
15.2.18 Struct
15.2.18.1 概要
Structクラスは,構造型(すなわち,幾つかのフィールド及びそれらのフィールドにアクセスするた
めのメソッドの集合をもつクラス)を生成する。フィールドは,0から始まる整数によって添字付けされ
る[15.2.18.3.1のe)及びf)参照]。生成されたクラスのインスタンスは,それぞれのフィールドに対応する
値をもつ。これらの値は,アクセサメソッドによって参照及び更新される。
15.2.18.2 直接のスーパークラス
Objectクラス
15.2.18.3 特異メソッド
15.2.18.3.1 Struct.new
Struct.new(string, *symbollist)
可視性 : public
動作 : このメソッドはクラスを作り,フィールドの集合及びそのアクセサメソッドを定義する。
――――― [JIS X 3017 pdf 186] ―――――
181
X 3017 : 2013 (ISO/IEC 30170 : 2012)
このメソッドが呼び出された場合,次の手順を実行する。
a) tructクラスを直接のスーパークラスとしてもつClassクラスの直接のインスタンスを作り,Cと
する。
b) tringがStringクラスのインスタンスでもSymbolクラスでもない場合,このメソッドの動作は未
規定とする。
c) tringがStringクラスのインスタンスの場合,Nをその内容とする。
1) が《定数識別子》という形式でない場合,ArgumentErrorクラスの直接のインスタンスを例外と
して発生させる。
2) が《定数識別子》という形式である場合,次の手順を行う。
i) Structクラスの定数束縛の集合内に名前がNのものが存在する場合,その束縛の値をCに置き
換える。
ii) そうではない場合,Structクラスの定数束縛の集合内に名前がNで値がCである束縛を作成す
る。
d) tringがSymbolクラスのインスタンスの場合,stringをsymbollistの先頭に追加する。
e) を0とする。
f) ymbollistのそれぞれの要素Sについて,次の手順を行う。
1) によって指定される名前をNとする。
2) 名前がNで添字がiのフィールドを,Cに定義する。
3) が《局所変数識別子》又は《定数識別子》という形式の場合,次の手順を行う。
i) 実引数をとらず,呼び出された際に名前がNのフィールドの値を返すようなメソッドを,Nとい
う名前でCに定義する。
ii) 実引数を一つとり,呼び出された際にその実引数を名前がNのフィールドに設定してその実引数
を返すようなメソッドを,N=(すなわち,Nの後に “=” が続く。)という名前でCに定義する。
4) を1だけ増加させる。
g) を返す。
Struct.newメソッドによって作られるクラスは,publicな特異メソッドのnew,[],及びmembers
をもつ。Struct.newメソッドによって作られたクラスの名前をCとして,これらのメソッドについて次
のように規定する。
C.new(*args)
可視性 : public
動作 :
a) が定義するフィールドをもつ,Cの直接のインスタンスIを作る。
b) nitializeメソッドを,Iに対し,argsを実引数リストとして呼び出す。
c) を返す。
C.[](*args)
可視性 : public
動作 : 上記のnewメソッドと同じとする。
C.members
可視性 : public
――――― [JIS X 3017 pdf 187] ―――――
182
X 3017 : 2013 (ISO/IEC 30170 : 2012)
動作 :
a) rrayクラスの直接のインスタンスAを作る。レシーバのそれぞれのフィールドについて,フィール
ドの添字順に,フィールドの名前を内容としてもつStringクラスの直接のインスタンスを作ってA
の末尾に追加する。
b) を返す。
15.2.18.4 インスタンスメソッド
15.2.18.4.1 Struct#==
==(other)
可視性 : public
動作 :
a) therとレシーバとが同じオブジェクトの場合,trueを返す。
b) therのクラスとレシーバのクラスとが違う場合,falseを返す。
c) そうではない場合,レシーバのそれぞれのフィールドについて,そのフィールド名をfとし,次の手
順を行う。
1) レシーバ及びotherのそれぞれの,fという名前をもつフィールドの値を,R及びOとする。
2) とOとが同じオブジェクトでない場合,次の手順を行う。
i) “==” メソッドを,Rに対し,Oを実引数として呼び出す。Vを呼出し結果の値とする。
ii) が偽の場合,falseを返す。
d) rueを返す。
15.2.18.4.2 Struct#[]
[](name)
可視性 : public
動作 :
a) ameがSymbolクラス又はStringクラスのインスタンスの場合,次の手順を行う。
1) ameによって指定される名前をNとする。
2) レシーバがNという名前のフィールドをもつ場合,そのフィールドの値を返す。
3) そうではない場合,Sを名前がNであるSymbolクラスのインスタンスとし,Sを名前属性にもつ
NameErrorクラスの直接のインスタンスを例外として発生させる。
b) ameがIntegerクラスのインスタンスの場合,iをnameの値とし,nをレシーバのフィールドの個
数とする。
1) が負の場合,iを新たにn+iとする。
2) がまだ負であるか,iがn以上の場合,IndexErrorクラスの直接のインスタンスを例外として発
生させる。
3) そうではない場合,添字がiであるフィールドの値を返す。
c) そうではない場合,このメソッドの動作は未規定とする。
15.2.18.4.3 Struct#[]=
[]=(name, obj)
可視性 : public
動作 :
――――― [JIS X 3017 pdf 188] ―――――
183
X 3017 : 2013 (ISO/IEC 30170 : 2012)
a) ameがSymbolクラスのインスタンス又はStringクラスのインスタンスの場合,次の手順を行う。
1) ameによって指定される名前をNとする。
2) レシーバがNという名前のフィールドをもつ場合,次の手順を行う。
i) そのフィールドの値をobjで置き換える。
ii) bjを返す。
3) そうではない場合,Sを名前がNであるSymbolクラスのインスタンスとし,Sを名前属性にもつ
NameErrorクラスの直接のインスタンスを例外として発生させる。
b) ameがIntegerクラスのインスタンスの場合,iをnameの値とする。nをレシーバのフィールドの
個数とする。
1) が負の場合,iを新たにn+iとする。
2) がまだ負であるか,iがn以上の場合,IndexErrorクラスの直接のインスタンスを例外として発
生させる。
3) そうではない場合,次の手順を行う。
i) 添字がiであるフィールドの値をobjで置き換える。
ii) bjを返す。
c) そうではない場合,このメソッドの動作は未規定とする。
15.2.18.4.4 Struct#each
each(&block)
可視性 : public
動作 :
a) lockが与えられていない場合,このメソッドの動作は未規定とする。
b) レシーバのそれぞれのフィールドについて,添字順に,そのフィールドの値を実引数としてblockを
呼び出す。
c) レシーバを返す。
15.2.18.4.5 Struct#eachpair
eachpair(&block)
可視性 : public
動作 :
a) lockが与えられていない場合,このメソッドの動作は未規定とする。
b) レシーバのそれぞれのフィールドについて,添字順に,次の手順を行う。
1) そのフィールドの名前及び値をそれぞれ,N及びVとする。Sを名前がNであるSymbolクラスの
インスタンスとする。
2) 及びVを実引数として,blockを呼び出す。
c) レシーバを返す。
15.2.18.4.6 Struct#initialize
initialize(*args)
可視性 : private
動作 : Naをargsの長さとし,Nfをレシーバのフィールドの個数とする。
a) aがNfより大きい場合,ArgumentErrorクラスの直接のインスタンスを例外として発生させる。
――――― [JIS X 3017 pdf 189] ―――――
184
X 3017 : 2013 (ISO/IEC 30170 : 2012)
b) そうではない場合,レシーバのそれぞれのフィールドfについて,iをfの添字とし,argsのi番目の
値をfの値とする。ただし,iがNa以上ならばnilをfの値とする。
c) 処理系定義の値を返す。
15.2.18.4.7 Struct#initializecopy
initializecopy(original)
可視性 : private
動作 :
a) レシーバとoriginalとが同じオブジェクトの場合,処理系定義の値を返す。
b) riginalがレシーバのクラスのインスタンスでない場合は,TypeErrorクラスの直接のインスタンス
を例外として発生させる。
c) レシーバのフィールドの個数とoriginalとのフィールドの個数とが異なる場合,TypeErrorクラスの
直接のインスタンスを例外として発生させる。
d) riginalのそれぞれのフィールドfについて,iをfの添字とし,レシーバのi番目のフィールドの値を
fの値とする。
e) 処理系定義の値を返す。
15.2.18.4.8 Struct#members
members
可視性 : public
動作 : 15.2.18.3.1で規定されているmembersメソッドと同じとする。
15.2.18.4.9 Struct#select
select(&block)
可視性 : public
動作 :
a) lockが与えられていない場合,このメソッドの動作は未規定とする。
b) rrayクラスの空の直接のインスタンスAを作る。
c) レシーバのそれぞれのフィールドについて,添字順に,次の手順を行う。
1) をそのフィールドの値とする。
2) lockをVを実引数として呼び出す。Rを呼出し結果の値とする。
3) が真の場合,VをAの末尾に追加する。
d) を返す。
15.2.19 Time
15.2.19.1 概要
Timeクラスのインスタンスは日時を表す。
Timeクラスのインスタンスは,次の属性をもつ。
マイクロ秒 : 1970年1月1日00:00 UTCからの経過時間をマイクロ秒で表したものである。マイクロ秒
は整数とし,その範囲は処理系定義とする。マイクロ秒属性の値は,マイクロ秒の表現に納まるよ
うに,処理系定義の方法で丸める。Timeクラスのインスタンスの作成時に与えられるマイクロ秒
がその範囲外であった場合は,ArgumentErrorクラス又はRangeErrorクラスのいずれかの直
接のインスタンスである例外を発生させなければならない。どちらのクラスを選ぶかは,処理系定
――――― [JIS X 3017 pdf 190] ―――――
次のページ PDF 191
JIS X 3017:2013の引用国際規格 ISO 一覧
- ISO/IEC 30170:2012(IDT)
JIS X 3017:2013の国際規格 ICS 分類一覧
- 35 : 情報技術.事務機械 > 35.060 : 情報技術に使用される言語