summaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
Diffstat (limited to 'spec')
-rw-r--r--spec217
1 files changed, 84 insertions, 133 deletions
diff --git a/spec b/spec
index d22a970d97..4e8beccac3 100644
--- a/spec
+++ b/spec
@@ -270,11 +270,9 @@ Rubyの変数はスコープ(有効範囲)と寿命(有効期限)によって4種類に分類され,
ミング言語における関数のような形式でメソッドを呼び出すことができる. こ
の場合引数が1つもない時でも括弧の省略はできない.
-関数形式では`@'で始まる名前を持つメソッドを呼び出すことができる. `@'で
-始まるメソッドは関数形式でしか呼び出すことができないため, 該当するクラ
-スまたはそのサブクラスからしか呼ばれないので, プライベートメソッドと呼
-ばれる. プライベートメソッドはC++におけるprotected member functionに該
-当する.
+クラス定義文の外で指定されたメソッドとクラスModuleのnoexportメソッドで
+指定されたメソッドは関数的メソッドと呼ばれ, 関数形式でしか呼び出すこと
+ができない.
*** スーパークラスのメソッド呼び出し
@@ -458,7 +456,7 @@ unless式
case式
case 式0
- [when 式1 [, 式2]...
+ [when 式1 [, 式2]... [then]
文1 ]...
[else
文n ]
@@ -603,10 +601,10 @@ Enumerableモジュールのgrepメソッドのようにイテレータとして呼ばれた時と
protect
文1
- [ resque
+ [resque
文2 ]
- [ ensure
- 文3 ]
+ [ensure
+ 文3]
end
文1を実行し, その実行中に例外が発生すればresque節で指定された文2を実行
@@ -712,12 +710,12 @@ yield文
*** メソッド呼び出し文
-1つ以上引数を持つメソッドを文として呼び出す場合には引数を括弧で括る必
-要はない. その形式は以下の通りである.
+1つ以上の引数を持つメソッド呼び出す場合には曖昧さがなければ, 引数を括
+弧で括る必要はない. その形式は以下の通りである.
- 式 '.' メソッド名 引数1 ',' [ 引数2... ][ '*' 引数n ]
- メソッド名 引数1 ',' [ 引数2... ][ '*' 引数n ]
- super 引数1 ',' [ 引数2... ][ '*' 引数n ]
+ 式 '.' メソッド名 引数1 ',' [引数2...]['*' 引数n]
+ メソッド名 引数1 ',' [引数2...]['*' 引数n]
+ super 引数1 ',' [引数2... ]['*' 引数n]
構文解析時に, 式のように解釈できる場合は式としての解釈が優先される.
@@ -726,7 +724,7 @@ yield文
foo 1 # メソッド呼び出しfoo(1)
foo -1 # ローカル変数foo - 1
-メソッド呼び出し文は単純文である.
+括弧のないメソッド呼び出し文は単純文である.
*** 制御修飾子
@@ -786,7 +784,7 @@ yield文
ド定義はネストできないので, メソッド定義文中ではメソッド定義文を再び呼
び出せない.
- def メソッド名 [ '(' 引数 [',' 引数...][',' '*'引数 ] ')' ]
+ def メソッド名 ['(' 引数 [',' 引数...][',' '*'引数 ] ')']
定義実体
end
@@ -794,12 +792,19 @@ yield文
で指定する. 仮引数並びの最後に`*'がある場合, 仮引数より多く与えられた
実引数は, 最後の引数に配列として与えられる(足りない時にはエラー).
+メソッドには関数的メソッドと通常メソッドがある. 関数的メソッドは関数形
+式でしか呼び出すことができず, よって該当するクラスとそのサブクラスのメ
+ソッドからしか呼び出すことができない. クラス定義文の外にあるdef文は関
+数的メソッドを定義し, クラス定義文の中にあるdef文は通常のメソッドを定
+義する. メソッドの可視性はModuleクラスのexport/noexportメソッドを使っ
+て変更する.
+
** 特異メソッド定義文
メソッド定義にはもう一つ特異メソッドの定義がある. 特異メソッドとはある
特定のオブジェクトに固有のメソッドである. 形式は以下の通りである.
- def 式 '.' メソッド名 [ '(' 引数 [',' 引数...][',' '*'引数 ] ')' ]
+ def 式 '.' メソッド名 ['(' 引数 [',' 引数...][',' '*'引数 ] ')']
定義実体
end
@@ -845,10 +850,10 @@ Rubyには処理系そのものに以下の機能が組み込まれている. ライブラリをロー
** 関数
-Rubyには厳密な意味では関数はないがBuiltinクラスのメソッドは(全ての通常
-クラスから関数形式で呼び出せるので), 関数的に用いられる. 関数的に用い
-られるメソッドを以下にあげる. これらのメソッドを再定義する際には互換性
-を考えて行なうべきである.
+Rubyには厳密な意味では関数はないがKernelクラスの関数メソッドは(全ての
+通常クラスから関数形式で呼び出せるので), 関数的に用いられる. 関数的に
+用いられるメソッドを以下にあげる. これらのメソッドを再定義する際には互
+換性を考えて行なうべきである.
_exit(status)
@@ -1116,8 +1121,7 @@ Rubyには厳密な意味では関数はないがBuiltinクラスのメソッドは(全ての通常
$ARGV $*と同じ.
- $ENV 環境変数にアクセスする連想配列(EnvDict). この変数に対
- して `for'を行なうと変数名と値のペアを与える.
+ $ENV 環境変数にアクセスする連想配列.
$FILENAME 仮想ファイル$ARGFで現在読み込み中のファイル名. メソッ
ドgets()が今読んでいるファイル名.
@@ -1163,67 +1167,6 @@ Rubyには厳密な意味では関数はないがBuiltinクラスのメソッドは(全ての通常
** クラス/モジュール
-*** ARGFILE(クラス)
-
-引数で指定されたファイル(引数が与えられていない時には標準入力)で構成さ
-れる仮想ファイルをアクセスするためのクラス. ただしこのクラスは特異メソッ
-ドしか持たず, モジュール的な使い方をされる. クラス名だけでなくシステム
-変数$ARGFでも参照できる.
-
- while gets()
- ...
- end
-
-と
-
- for $_ in $ARGF
- ...
- end
-
-は全く同じ意味だが, 後者の方がより美しく, 理解しやすく, そしてブロック
-生成のコストのため若干遅い.
-
-SuperClass: Object
-
-Included Modules: Enumerable
-
-Methods:
-
- each
-
- 各行毎に繰り返すイテレータ
-
- each_byte
-
- 各文字毎に繰り返すイテレータ
-
- eof
-
- 現在読み込んでいるファイル(仮想ファイル全体ではない)が終りに到
- 達した時に真を返す.
-
- getc
-
- 仮想ファイルから1文字読み込む. 戻り値は文字コードを表す整数で
- ある. ファイルの終りに到達した時にはnilを返す. このメソッドで
- 読み込んだ場合, システム変数`$.'は変化しない.
-
- gets
- readline
-
- 仮想ファイルから一行読み込んで, 読み込みに成功した時にはその文
- 字列を返す. ファイルの終りに到達した時にはnilを返す. 行の区切
- りはシステム変数`$/'によって変更できる. 読み込んだ文字列はシス
- テム変数`$_'にもセットされる.
-
- read
-
- 仮想ファイルの内容を全て文字列として読み込む.
-
- readlines
-
- 仮想ファイルを全て読み込んで, 各行を要素として持つ配列を返す.
-
*** Array(クラス)
数字を添字とした配列のクラスである. 生成は一般的には配列式``[...]''で
@@ -1431,17 +1374,6 @@ Methods:
商と剰余の2要素の配列を返す.
-*** Builtin(クラス)
-
-全ての通常クラスのスーパークラス. Ruby組み込みの全ての関数的に呼ばれるメソッド
-はこのクラスで定義されている.
-
-SuperClass: Kernel
-
-Methods:
-
- 「関数」の項目を参照のこと.
-
*** Class(クラス)
クラスのクラス. より厳密に説明するとクラスは特異メソッドを継承するため
@@ -1453,13 +1385,15 @@ Classはそのメタクラスのクラスである(分かったかな?). が, この解説が理解
SuperClass: Module
-Methods:
+Private Methods:
attr(name[, public])
そのクラスのインスタンスに対してnameで指定される属性を定義する.
詳しくはModuleのattrメソッドの項を参照のこと.
+Methods:
+
new(...)
クラスのインスタンスを生成する. 多くの場合このメソッドはサブク
@@ -1799,34 +1733,6 @@ Methods:
全ての要素をソートした配列を返す.
-*** EnvDict(クラス)
-
-環境変数を操作するためのクラス. システム変数$ENVに唯一のインスタンスが
-代入されている.
-
-SuperClass: Object
-
-Included Modules: Enumerable
-
-Methods:
-
- [name]
-
- 環境変数の値を返す.
-
- [name]= val
-
- 環境変数の値をvalに設定する. valとしてnilを指定した場合には,
- 該当する環境変数を削除する.
-
- delete(name)
-
- 環境変数を削除する.
-
- each
-
- 環境変数の名前と値のペアを与えるイテレータ.
-
*** Etc(モジュール)
/etcディレクトリ以下の情報を得るためのモジュール. クラスにインクルード
@@ -2463,7 +2369,8 @@ Single Methods:
*** Kernel(クラス)
-全てのクラスの基底クラス.
+全てのクラスの基底クラス. Ruby組み込みの全ての関数メソッドはこのクラス
+で定義されている. 関数メソッドについては「関数」の項目を参照のこと.
SuperClass: なし
@@ -2533,6 +2440,7 @@ Methods:
時は必ず「A.hash == B.hash」が成立する必要があるので, "=="を再
定義した時には必ずこちらもそれに合わせて再定義すること.
+
*** Math(モジュール)
浮動小数点演算をサポートするクラス. Mathモジュールは同じ定義のメソッド
@@ -2584,19 +2492,21 @@ Single Methods:
SuperClass: Object
-Methods:
+Private Methods:
attr(name[, public])
そのモジュールをインクルードしたクラスのインスタンスに対して
nameで指定される属性を付加し, 属性に対するアクセスメソッドを定
- 義する. attr("attr")は以下に示すコードとほぼ同義である.
+ 義する. attr("attr")はクラス定義に以下に示すコードを追加するの
+ とほぼ同義である.
def attr; @attr; end
省略可能な第2引数publicが与えられて, かつその値がnilでない時に
は, その属性には属性設定メソッドも用意され, 外部から代入可能に
- なる. attr("attr", %TRUE)は以下のコードとほぼ同義である.
+ なる. attr("attr", %TRUE)はクラス定義に以下のコードを追加する
+ のとほぼ同義である.
def attr; @attr; end
def attr=(val); @attr = val; end
@@ -2614,11 +2524,23 @@ Methods:
はアクセスメソッドがすでに定義されている場合は, デフォルトのア
クセスメソッドを定義しない.
+Methods:
+
+ export(name[, name..])
+
+ nameで指定されたメソッドを通常形式で呼び出し可能にする. すでに
+ 通常メソッドである場合には何もしない.
+
to_s
モジュールの文字列表現を返す. モジュールの場合の文字列表現はモ
ジュール名である.
+ unexport(name[, name..])
+
+ nameで指定されたメソッドを関数形式でだけ呼び出し可能にする. す
+ でに関数メソッドである場合には何もしない.
+
*** Nil(クラス)
偽を表すオブジェクトnilのクラス. 偽変数(の値)nilはNilクラスの唯一のイ
@@ -2829,8 +2751,8 @@ Methods:
accept
- 新しい接続を受け付けて, 新しい接続に対するソケットを返す.
- accept(2)を参照.
+ 新しい接続を受け付けて, 新しい接続に対するソケットとアドレスの
+ ペアを返す. accept(2)を参照.
bind(addr)
@@ -2846,9 +2768,22 @@ Methods:
listen(2)と同じ働きをする.
- recv(len, flags)
+ recv(len[, flags])
+
+ ソケットからデータを受け取り, 文字列として返す. lenは受け取る
+ 最大の長さを指定する. flagsについてはrecv(2)を参照. flagsのデ
+ フォルト値は0である.
+
+ recvfrom(len[, flags])
+
+ recvと同様にソケットからデータを受け取るが, 戻り値は文字列と相
+ 手ソケットのアドレスのペアである. 引数についてはrecvと同様.
+
send(mesg, flags[, to])
- sysread(len)
+
+ ソケットを介してデータを送る.flagsに関してはsend(2)を参照の事.
+ connectしていないソケットに対しては送り先であるtoを指定する必
+ 要がある.実際に送ったデータの長さを返す.
Single Methods:
@@ -3044,6 +2979,14 @@ Methods:
文字列の長さ(バイト数)を返す.
+ ljust(width)
+ rjust(width)
+ center(width)
+
+ 文字列をそれぞれ, 右詰め, 左詰め, 真中寄せした幅widthの文字列
+ を返す. 文字列長がwidthより長い場合は元の文字列を返し, 切り詰
+ めない.
+
next
selfからendまで「次の」文字列を返す. 次の文字列とは数字は数字
@@ -3117,6 +3060,12 @@ Methods:
end
sum %= 65536
+ swapcase
+
+ 文字列中のアルファベットのうち大文字を小文字に, 小文字を大文字
+ にに置き換える. 元の文字列が更新されることに注意. 動作としては
+ tr("a-zA-Z", "A-Za-z")より少し速い.
+
to_f
文字列をFloatに変換する.
@@ -3127,12 +3076,14 @@ Methods:
toupper
uc
+ upcase
文字列中のアルファベットを全て大文字に置き換える. 元の文字列が
更新されることに注意. tr("a-z", "A-Z")より少し速い.
tolower
lc
+ downcase
文字列中のアルファベットを全て小文字に置き換える. 元の文字列が
更新されることに注意. tr("A-Z", "a-z")より少し速い.
@@ -3495,7 +3446,7 @@ Single Methods:
end
時間の単位は秒であり, 浮動小数点数で与えられる. 詳細は
- times(3C)を参照のこと.
+ times(3)を参照のこと.
*** UNIXserver