この規格ページの目次
105
X 3017 : 2013 (ISO/IEC 30170 : 2012)
3) が《プログラム》に対応する場合,その《プログラム》の評価を終了し,10.1 d)を実行してから,そ
の例外の情報を処理系定義の方法で出力する。
15 組込みクラス及び組込みモジュール
15.1 概要
組込みクラス及び組込みモジュールは,プログラムの実行前にあらかじめ作成されるクラス及びモジュ
ールとする(7.2参照)。図1は,これらのクラスとモジュールとを,クラス階層とインクルードされてい
るモジュールとの関係とともに示したものである。
組込みクラス及び組込みモジュールは,それぞれ15.2及び15.3で規定する。その規定は,次のような属
性(13.1.1及び13.2.1参照)について記述することによって行う。
− 直接のスーパークラス(組込みクラスの場合だけ)。
− インクルードモジュールリスト
− 定数
− 特異メソッド すなわち,組込みクラス又は組込みモジュールの特異クラスのインスタンスメソッド。
組込みクラス又は組込みモジュールの特異メソッドのクラスモジュールリストは,次の二つの要素か
らなる。第1の要素は,その組込みクラス又は組込みモジュールの特異クラスであり,第2の要素は
Objectクラスである。
− インスタンスメソッド 組込みクラス又は組込みモジュールのインスタンスメソッドのクラスモジュ
ールリスト(13.3.1参照)は,次の二つの要素からなる。第1の要素は,その組込みクラス又は組込
みモジュール自身であり,第2の要素はObjectクラスである。
組込みクラス又は組込みモジュールのクラス変数束縛の集合は空集合とする。
組込みクラス又は組込みモジュールは,プログラムテキスト上のクラス定義又はモジュール定義によっ
て作成するのではなく,15.2又は15.3に記述された属性をもつクラス又はモジュールとして,プログラム
の実行前にあらかじめ作成する。
組込みクラス又は組込みモジュール(Objectクラス自身も含む。)ごとに定数をObjectクラスの中に
定義する。その定数の名前はその組込みクラス又は組込みモジュールの名前に等しく,その定数の値はそ
のクラス又はモジュール自体とする。
規格適合処理系は,次の属性及び/又は値を追加提供してもよい。
− この規格で定義されている,規定された初期値をもたない属性に対する特定の初期値。
− 定数,特異メソッド及び/又はインスタンスメソッド。
− この規格で規定されているメソッドに対する,追加の省略可能仮引数又は配列仮引数。
− 組込みクラス又は組込みモジュールに対する,追加のインクルードモジュール。
――――― [JIS X 3017 pdf 111] ―――――
106
X 3017 : 2013 (ISO/IEC 30170 : 2012)
Kernel Objec Module
Class
NilClass
TrueClass
FalseClass
Numeric
Comparable Integer
Float
String
Symbol
Array
Hash
Range
Regexp
Enumerable MatchData
Proc
Struct
Time
IO
File
Exception
StandardError
ArgumentError
LocalJumpError
RangeError
RuntimeError
TypeError
ZeroDivisionError
NameErro
NoMethodError
IndexError
IOError
direct superclass
EOFError
SystemCallError
included module
ScriptError
SyntaxError
LoadError
図1−組込みクラス及び組込みモジュール
15.2及び15.3では,次のような記法を使用する。
− 15.2及び15.3のそれぞれの細分箇条(例えば,15.2.1)は,組込みクラス又は組込みモジュールを規
定する。その細分箇条の題名は,その組込みクラス又は組込みモジュールの名前とする。その名前は,
――――― [JIS X 3017 pdf 112] ―――――
107
X 3017 : 2013 (ISO/IEC 30170 : 2012)
Objectクラスの定数束縛の名前として使われる(15.2.1.4参照)。
− Objectクラス(15.2.1参照)以外の組込みクラスは,その組込みクラスを規定する細分箇条の下位
階層にある“直接のスーパークラス”という題名の細分箇条に記載されたクラスを,直接のスーパー
クラスとしてもつ。
− 組込みクラス又は組込みモジュールを規定する細分箇条の下位階層に“インクルードモジュール”と
いう題名の細分箇条がある場合には,その組込みクラス又は組込みモジュールは,そこに記載された
モジュール群を,記載されている順にインクルード(13.1.3参照)する。
− “特異メソッド”という題名の細分箇条の下位階層に,“C.m”という形式の題名の細分箇条がある場
合,それはクラスCの特異メソッドmを規定する。
− “インスタンスメソッド”という題名の細分箇条の下位階層に,“C#m”という形式の題名の細分箇条
がある場合,それはクラスCのインスタンスメソッドmを規定する。
− メソッドの仮引数仕様は,《メソッド仮引数部》の形式で規定される(13.3.2参照)。
例1 次の例は,メソッドsampleの仮引数仕様を規定している。
sample(arg1, arg2, opt=expr, *ary, &blk)
− 特異メソッド名の前には,接頭語として,クラス又はモジュールの名前及びピリオド(“.”)を付加
する。
例2 次の例は,クラスSampleClassの特異メソッドsampleの仮引数仕様を規定している。
SampleClass.sample(arg1, arg2, opt=expr, *ary, &blk)
− 仮引数仕様に続き,メソッドの可視性及び動作を規定する。
可視性は,“可視性 : ”というラベルに続いて規定する。可視性は,public,protected又はprivateの
いずれかである。
次に,“動作 : ”というラベルに続けて,メソッドの動作,すなわち,メソッドの《メソッド本体》
を評価するときの手順[13.3.3 i)参照]を規定する。
これらの手順において,メソッドの仮引数仕様に現れる仮引数の名前の参照は,同名の局所変数に
束縛されたオブジェクトを示す。
− 仮引数の名前及び説明に使用する変数の名前はイタリック字体で示す。
− “Xを実引数としてblockを呼び出す”という表現は,Proc仮引数blockに対応する《ブロック》を,X
を実引数として,11.3.3のように呼び出すことをいう。
− “Xを返す”という表現は,メソッドの《メソッド本体》の評価をその時点で終了し,Xをこの《メソッ
ド本体》の値とすることを示す。
− “Nによって指定される名前”という表現は,次の手順の結果を示す。
a) がSymbolクラスのインスタンスの場合,Nの名前とする。
b) がStringクラスのインスタンスの場合,Nの内容(15.2.10.1参照)とする。
c) それ以外の場合,そのメソッドの動作は未規定とする。
15.2 組込みクラス
15.2.1 Object
15.2.1.1 概要
Objectクラスは,他のクラスの暗黙の直接のスーパークラスとする。すなわち,クラス定義において
その直接のスーパークラスが指定されなかった場合に,Objectクラスが直接のスーパークラスとなる
――――― [JIS X 3017 pdf 113] ―――――
108
X 3017 : 2013 (ISO/IEC 30170 : 2012)
(13.2.2参照)。
全ての組込みクラス及び組込みモジュールは,Objectクラスの定数を通じて参照することができる
(15.2.1.4参照)。
15.2.1.2 直接のスーパークラス
Objectクラスは,直接のスーパークラスをもたない。ただし,処理系定義の直接のスーパークラスを
もたせてもよい。
15.2.1.3 インクルードモジュール
Objectクラスは,次のモジュールをインクルードする。
− Kernel
15.2.1.4 定数
Objectクラスには,次の定数が定義される。
STDIN : 処理系定義の,読込み可能なIOクラスのインスタンス。通常の入力を読み込むために使用
される。
STDOUT : 処理系定義の,書込み可能なIOクラスのインスタンス。通常の出力を書き込むために使用
される。
STDERR : 処理系定義の,書込み可能なIOクラスのインスタンス。診断出力を書き込むために使用さ
れる。
注記 これらの定数の他に,組込みクラス及び組込みモジュールごとにその名前がObjectクラスの
中に定数として定義される(15.1参照)。
15.2.1.5 インスタンスメソッド
15.2.1.5.1 Object#initialize
initialize(*args)
可視性 : private
動作 : initializeメソッドは,既定のオブジェクト初期化メソッドであり,インスタンスが生成される
ときに呼び出される(13.2.4参照)。返却値は処理系定義とする。
Objectクラスがクラス継承木の根でない場合,initializeメソッドは,Objectクラスに定義する
代わりに,クラス継承木の根であるクラスに定義しなければならない。
15.2.2 Module
15.2.2.1 概要
全てのモジュールは,Moduleクラスのインスタンスとする。したがって,Moduleクラスで定義され
た動作は,全てのモジュールに共通となる。
Moduleクラスのインスタンス間の2項関係(A Bとする。)を,次のうちのいずれかが成り立つこと
であると定義する。
− Bがモジュールであって,BがAにインクルードされている(13.1.3参照)。
− AとBとが共にClassクラスのインスタンスであって,BがAのスーパークラスである。
15.2.2.2 直接のスーパークラス
Objectクラス
15.2.2.3 特異メソッド
15.2.2.3.1 Module.constants
――――― [JIS X 3017 pdf 114] ―――――
109
X 3017 : 2013 (ISO/IEC 30170 : 2012)
Module.constants
可視性 : public
動作 :
a) rrayクラスの空の直接のインスタンスを作り,それをAとする。
b) 現在のクラス又はモジュールをCとする。 クラスモジュールリスト の上から2番目の位置にあるリ
ストと同じ要素(最後の要素であるObjectクラスを除く。)を含むリストを,Lとする。
Cの全てのスーパークラス(Objectクラスを除く。)及びC自身からなる集合を,CSとする。た
だし,C自身がObjectクラスの場合には,ObjectクラスもCSに含まれる。CSに含まれる全ての
クラスのインクルードモジュールリストに含まれる全てのモジュールからなる集合を,MSとする。L,
CS及びMSの和集合を,CMとする。
c) M内のクラス又はモジュールのそれぞれ(それをcとする。)に対して,更に,そのcの中に定義さ
れている定数の名前のそれぞれ(それをNとする。)に対して,次の手順を行う。
1) 内容がNである新しく作ったStringクラスの直接のインスタンス,又は,名前がNであるSymbol
クラスの直接のインスタンスのいずれかを,Sとする。ただし,Sの値としてどちらを選ぶかは,処
理系定義とする。
2) 次の場合を除き,SをAに挿入する(Sが挿入される位置は処理系定義とする。)。すなわち,Sが
Symbolクラスのインスタンスであって,かつ,AがSと同じ名前のSymbolクラスのインスタン
スを要素にもつ場合,又は,SがStringクラスのインスタンスであって,かつ,AがSと同じ内
容のStringクラスのインスタンスを要素にもつ場合は,追加しない。
d) を返す。
15.2.2.3.2 Module.nesting
Module.nesting
可視性 : public
動作 : の上から2番目の要素であるリストの,最後の要素以外の要素を同じ順
クラスモジュールリスト
序で含む新しく作ったArrayクラスの直接のインスタンスを返す。
15.2.2.4 インスタンスメソッド
15.2.2.4.1 Module#<=>
<=>(other)
可視性 : public
動作 : Aをotherとする。Rをレシーバとする。
a) がModuleクラスのインスタンスでない場合,nilを返す。
b) 及びRが同じオブジェクトの場合,値が0のIntegerクラスのインスタンスを返す。
c) Aの場合,値が−1のIntegerクラスのインスタンスを返す。
d) Rの場合,値が1のIntegerクラスのインスタンスを返す。
e) それ以外の場合,nilを返す。
15.2.2.4.2 Module#<
<(other)
可視性 : public
動作 : Aをotherとする。Rをレシーバとする。
――――― [JIS X 3017 pdf 115] ―――――
次のページ PDF 116
JIS X 3017:2013の引用国際規格 ISO 一覧
- ISO/IEC 30170:2012(IDT)
JIS X 3017:2013の国際規格 ICS 分類一覧
- 35 : 情報技術.事務機械 > 35.060 : 情報技術に使用される言語