summaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
Diffstat (limited to 'spec')
-rw-r--r--spec585
1 files changed, 133 insertions, 452 deletions
diff --git a/spec b/spec
index a067075b67..eaec5a37c4 100644
--- a/spec
+++ b/spec
@@ -227,11 +227,12 @@ Rubyの変数はスコープ(有効範囲)と寿命(有効期限)によって4種類に分類され,
FOOBAR
-大文字で始まる識別子はクラス定数へのアクセスであり,そのクラスと全ての
-サブクラスのスコープ内で参照できる.定数への代入はトップレベル,すなわ
-ちメソッドが定義できるレベルでのみ可能である.この変数はクラス間で値が
-共有され,一度代入すると値を変更することができない.クラス定数の寿命は
-クラスの寿命と等しい.
+大文字で始まる識別子は定数へのアクセスであり,最初に定義されたクラスと
+全てのサブクラスのスコープ内で参照できる.定数の定義は代入か,定数を定
+義しているモジュールをインクルードすることによって行なわれる.定数への
+代入はトップレベル,すなわちメソッドが定義できるレベルでのみ可能である.
+定数はクラス間で値が共有され,一度代入すると値を変更することができない
+(代入は例外を発生させる).クラス定数の寿命はクラスの寿命と等しい.
クラス定義は自動的に定数を定義するので,クラス名は定数である.
@@ -254,23 +255,13 @@ Rubyの変数はスコープ(有効範囲)と寿命(有効期限)によって4種類に分類され,
通常の変数以外に疑似変数と呼ばれる特殊な変数が4つある.
self | 現在のメソッドの実行主体
- nil | Nilクラスの唯一のインスタンス(偽を表す)
+ nil | Nilクラスの唯一のインスタンス(偽を表す)
__FILE__ | スクリプトのファイル名(文字列)
__LINE__ | 現在の行番号(整数)
これらの疑似変数は代入によってその値を変更することはできない.これらの
変数への代入は例外を発生させる.
-** 括弧によるグルーピング
-
-例:
-
- (1+2)*3
-
-式は括弧によってグルーピングすることができる.
-
- `(' 式 `)'
-
** 配列式
例:
@@ -296,8 +287,8 @@ Rubyの変数はスコープ(有効範囲)と寿命(有効期限)によって4種類に分類され,
{1=>2, 2=>4, 3=>6}
連想配列とは任意のオブジェクトをキー(添字)として持つ配列である.Ruby
-の連想配列はDict(辞書)クラスのインスタンスである.詳細はクラスDictの項
-を参照されたい.連想配列を生成する連想配列式は以下の形式である.
+の連想配列はHash(ハッシュ表)クラスのインスタンスである.詳細はクラス
+Hashの項を参照されたい.連想配列を生成する連想配列式は以下の形式である.
`{' 式 `=>' 式.. `}'
@@ -332,7 +323,7 @@ Rubyの変数はスコープ(有効範囲)と寿命(有効期限)によって4種類に分類され,
下の文字または予約語で始まる場合は,優先順位の関係で予想通りの結果が得
られない場合がある.
- (, [, {, <, /, +, -, if, while
+ (, [, {, /, +, -, if, while
どのように評価されるか曖昧な場合には括弧をつける事.
@@ -350,10 +341,9 @@ Rubyの変数はスコープ(有効範囲)と寿命(有効期限)によって4種類に分類され,
でも小文字でも構わない.変数名とは識別子の名前空間が違うので重複しても
構わない.
-クラスModuleで定義されているメソッド(public,protected,private)でメソッ
-ドの呼び出し方を制御することが出来る.protectedまたは privateで指定さ
-れた制限されたメソッドは関数形式でしか呼び出すことが出来ず,さらに
-privateメソッドは同じクラスで定義されたメソッドからしか呼び出せない.
+クラスModuleで定義されているメソッド(public,private)でメソッドの呼び出
+し方を制御することが出来る.privateで指定された制限されたメソッドは関
+数形式でしか呼び出すことが出来ない.
** SUPER
@@ -519,6 +509,16 @@ privateメソッドは同じクラスで定義されたメソッドからしか呼び出せない.
これはあくまでもそういう形式のメソッド呼び出しとして解釈されるというだ
けで,rubyプログラムでこういう記述が許されるというわけではない.
+** 括弧によるグルーピング
+
+例:
+
+ (1+2)*3
+
+式は括弧によってグルーピングすることができる.
+
+ `(' 式 `)'
+
** IF
if 式1 [then]
@@ -724,6 +724,14 @@ begin式の値は一番最後に評価された式の値である.begin式の処理中に発生し
begin式を終了する前に必ず(正常終了時だけでなく,例外, return, break,
continue, redoなどによる脱出でも)ensure節の式を評価する.
+** RETRY
+
+ retry
+
+begin式のresque節で使い,begin式を始めからもう一度実行する.例外処理を
+行なってから再試行するのに使う.resque節以外でretryが用いられた場合例
+外が発生する.
+
** RETURN
return [式[`,' 式..]]
@@ -751,14 +759,6 @@ continueはもっとも内側のループの次の繰り返しを始める.
redoはループ条件のチェックを行なわず,現在の繰り返しをやり直す.
-** RETRY
-
- retry
-
-begin式のresque節で使い,begin式を始めから実行する.例外処理を行なって
-から再試行するのに使う.resque節以外でretryが用いられた場合例外が発生
-する.
-
** クラス定義
クラスを定義する構式は以下の通りである.
@@ -794,17 +794,16 @@ begin式のresque節で使い,begin式を始めから実行する.例外処理を行なって
実引数は,最後の引数に配列として与えられる(足りない時にはエラー).
-メソッドには呼び出し制限を加えることが出来,制限を加えられたメソッドは,
-関数形式でしか呼び出せない(protected),あるいは関数形式でしかも同じク
-ラスのメソッドからしか呼べない(private).
+メソッドには呼び出し制限を加えることができ,制限を加えられたメソッドは,
+関数形式でしか呼び出せない(privateメソッド).
新規にメソッドを定義する場合,クラス定義式の外にあるdef式はデフォルト
-ではprotectedメソッドを定義し,クラス定義式の中にあるdef式はpublicメソッ
+ではprivateメソッドを定義し,クラス定義式の中にあるdef式はpublicメソッ
ドを定義する.スーパークラスのメソッドを再定義する場合には定義されるメ
ソッドの可視性はスーパークラスのメソッドのものを受け継ぐ.
メソッドの可視性を変更する場合にはModuleクラスで定義されているpublic,
-protected, privateの各メソッドを用いる.
+privateの各メソッドを用いる.
** 特異メソッド定義
@@ -824,6 +823,8 @@ protected, privateの各メソッドを用いる.
サブクラスにも継承される.言い替えればクラスの特異メソッドは他のオブジェ
クト指向システムにおけるクラスメソッドの働きをする.
+注意: インクルードしたモジュールの特異メソッドは継承しない.
+
** ALIAS
以下の形式でメソッドに別名をつけることができる.
@@ -1551,193 +1552,6 @@ Methods:
CONSペアからなるリストの各要素を与えるイテレータ.
-** DBM(クラス)
-
-NDBMファイルをアクセスするクラス.キー,データともに文字列でなければな
-らないという制限と,データがファイルに保存されるという点を除いては
-Dictクラスと全く同様に扱うことができる.NDBMを備えていないシステムでは
-このクラスは定義されない.
-
-SuperClass: Object
-
-Included Modules: Enumerable
-
-Methods:
-
- self [key]
-
- keyをキーとする値を返す.
-
- self [key]= value
-
- keyをキーとして,valueを格納する.valueとしてnilを指定すると,
- keyに対する項目の削除となる.
-
- clear
-
- DBMファイルの中身を空にする.
-
- close
-
- DBMファイルをクローズする.以後の操作は例外を発生させる.
-
- delete(key)
-
- keyをキーとする組を削除する.
-
- delete_if
-
- 要素を削除するイテレータ.key::valueというペアを与えて,ブロッ
- クを評価した値が真の時,該当する項目を削除する.
-
- each
- each_pair
-
- key::valueなるペアを与えるイテレータ.
-
- each_key
-
- 全てのkeyに対して繰り返すイテレータ.
-
- each_value
-
- 全てのvalueに対して繰り返すイテレータ.
-
- has_key(key)
- includes(key)
-
- keyがデータベース中に存在する時,真を返す
-
- has_value(value)
-
- valueを値とする組がデータベース中に存在する時,真を
- 返す
-
- indexes(ary)
- indexes(key-1, ..., key-n)
-
- 1番目の形式では文字列の配列を引数として受けて,その要素をキー
- とする要素を含む配列を返す.2番目の形式では各引数の値をキーと
- する要素を含む配列を返す.
-
- keys
-
- データベース中に存在するキー全てを含む配列を返す.
-
- length
- size
-
- データベース中の要素の数を返す.(注意:現在の実現では要素数を数
- えるためにデータベースを全部検索するので,結構コストが高い.気
- をつけて使うこと.)
-
- to_a
-
- データベース中のkey-valueペアを要素とする配列を返す.
-
- values
-
- データベース中に存在する値全てを含む配列を返す.
-
-Single Methods:
-
- open(dbname[, mode])
-
- dbnameで指定したデータベースをモードをmodeに設定してオープンす
- る.modeの省略値は0666である.modeとしてnilを指定するとデータ
- ベースが既に存在しない時には新たにオープンせず,nilを返す.
-
-** Dict(クラス)
-
-辞書あるいは連想配列.任意のオブジェクトを添字とできる配列のクラスであ
-る.連想配列オブジェクトの生成は一般的には連想配列式``{a=>b,..}'' で行
-なわれる.
-
-SuperClass: Object
-
-Included Modules: Enumerable
-
-Methods:
-
- self [key]
-
- keyをキーとする値を返す.
-
- self [key]= value
-
- keyをキーとして,valueを格納する.valueとしてnilを指定するとそ
- のkeyに対する項目の削除となる.つまり,Dictは値としてnilを持つ
- ことはできない.
-
- clear
-
- 連想配列を空にする.
-
- delete(key)
-
- keyをキーとする組を削除する.
-
- delete_if
-
- 要素を削除するイテレータ.key::valueというペアを与えて,ブロッ
- クを評価した値が真の時,該当する項目を削除する.
-
- each
- each_pair
-
- key::valueなるペアを与えるイテレータ.
-
- each_key
-
- 全てのkeyに対して繰り返すイテレータ.
-
- each_value
-
- 全てのvalueに対して繰り返すイテレータ.
-
- has_key(key)
- includes(key)
-
- keyが辞書中に存在する時,真を返す
-
- has_value(value)
-
- valueを値とする組が辞書中に存在する時,真を返す
-
- indexes(ary)
- indexes(key-1, ..., key-n)
-
- 1番目の形式では配列を引数として受けて,その要素をキーとする要
- 素を含む配列を返す.2番目の形式では各引数の値をキーとする要素
- を含む配列を返す.
-
- keys
-
- 辞書中に存在するキー全てを含む配列を返す.
-
- length
- size
-
- 辞書中の要素の数を返す.
-
- to_a
-
- 辞書中のkey-valueペアを要素とする配列を返す.
-
- values
-
- 辞書中に存在する値全てを含む配列を返す.
-
-Single Methods:
-
- Dict[key, value..]
-
- 奇数番目の引数をkey,偶数番目の引数をvalueとする辞書を生成する.
-
- new
-
- 新しい(空の)辞書オブジェクトを返す.
-
** Dir(クラス)
ディレクトリ内の要素を順に返すディレクトリストリーム操作のためのクラス.
@@ -2367,6 +2181,100 @@ Single Methods:
文字列をワイルドカードに変換したオブジェクトを返す.
+** Hash(クラス)
+
+連想配列あるいはハッシュ表.任意のオブジェクトを添字とできる配列のクラ
+スである.連想配列オブジェクトの生成は一般的には連想配列式
+
+ ``{a=>b,..}''
+
+で行なわれる.
+
+SuperClass: Object
+
+Included Modules: Enumerable
+
+Methods:
+
+ self [key]
+
+ keyをキーとする値を返す.
+
+ self [key]= value
+
+ keyをキーとして,valueを格納する.valueとしてnilを指定するとそ
+ のkeyに対する項目の削除となる.つまり,Hashは値としてnilを持つ
+ ことはできない.
+
+ clear
+
+ 連想配列を空にする.
+
+ delete(key)
+
+ keyをキーとする組を削除する.
+
+ delete_if
+
+ 要素を削除するイテレータ.key::valueというペアを与えて,ブロッ
+ クを評価した値が真の時,該当する項目を削除する.
+
+ each
+ each_pair
+
+ key::valueなるペアを与えるイテレータ.
+
+ each_key
+
+ 全てのkeyに対して繰り返すイテレータ.
+
+ each_value
+
+ 全てのvalueに対して繰り返すイテレータ.
+
+ has_key(key)
+ includes(key)
+
+ keyが辞書中に存在する時,真を返す
+
+ has_value(value)
+
+ valueを値とする組が辞書中に存在する時,真を返す
+
+ indexes(ary)
+ indexes(key-1, ..., key-n)
+
+ 1番目の形式では配列を引数として受けて,その要素をキーとする要
+ 素を含む配列を返す.2番目の形式では各引数の値をキーとする要素
+ を含む配列を返す.
+
+ keys
+
+ 辞書中に存在するキー全てを含む配列を返す.
+
+ length
+ size
+
+ 辞書中の要素の数を返す.
+
+ to_a
+
+ 辞書中のkey-valueペアを要素とする配列を返す.
+
+ values
+
+ 辞書中に存在する値全てを含む配列を返す.
+
+Single Methods:
+
+ Hash[key, value..]
+
+ 奇数番目の引数をkey,偶数番目の引数をvalueとする辞書を生成する.
+
+ new
+
+ 新しい(空の)辞書オブジェクトを返す.
+
** Integer(クラス)
整数クラス.実際はその大きさによってFixnumとBignumいう二つのサブクラス
@@ -2564,7 +2472,7 @@ Methods:
hash
- オブジェクトのハッシュ値(Fixnum)を返す.Dictクラスでキーとなる
+ オブジェクトのハッシュ値(Fixnum)を返す.Hashクラスでキーとなる
オブジェクトを格納するのに用いられている.「A == B」が成立する
時は必ず「A.hash == B.hash」が成立する必要があるので,"=="を再
定義した時には必ずこちらもそれに合わせて再定義すること.
@@ -2668,14 +2576,8 @@ Methods:
private(name[, name..])
- nameで指定されたメソッドを同じクラスで定義されたメソッドからだ
- け,関数形式でだけ呼び出し可能にする.すでにprivateメソッドで
- ある場合には何もしない.
-
- protected(name[, name..])
-
nameで指定されたメソッドを関数形式でだけ呼び出し可能にする.す
- でにprotectedメソッドである場合には何もしない.
+ でにprivateメソッドである場合には何もしない.
public(name[, name..])
@@ -2905,66 +2807,6 @@ Methods:
範囲の始点を返す.
-** Socket(クラス)
-
-SuperClass: BasicSocket
-
-ソケットそのものに対するシステムコールレベルのアクセスを提供するクラス.
-Perlのソケットに対するアクセスと同レベルの機能を提供している.このクラ
-スではソケットアドレスはpackされた文字列で,指定する.UDPソケットはこ
-のクラスを使って利用する.
-
-Methods:
-
- accept
-
- 新しい接続を受け付けて,新しい接続に対するソケットとアドレスの
- ペアを返す.accept(2)を参照.
-
- bind(addr)
-
- bind(2)と同じ働きをする.addrはpackされたソケットアドレス構造
- 体である.
-
- connect(addr)
-
- connect(2)と同じ働きをする.addrはpackされたソケットアドレス構
- 造体である.
-
- listen(backlog)
-
- listen(2)と同じ働きをする.
-
- recv(len[, flags])
-
- ソケットからデータを受け取り,文字列として返す.lenは受け取る
- 最大の長さを指定する.flagsについてはrecv(2)を参照.flagsのデ
- フォルト値は0である.
-
- recvfrom(len[, flags])
-
- recvと同様にソケットからデータを受け取るが,戻り値は文字列と相
- 手ソケットのアドレスのペアである.引数についてはrecvと同様.
-
- send(mesg, flags[, to])
-
- ソケットを介してデータを送る.flagsに関してはsend(2)を参照の事.
- connectしていないソケットに対しては送り先であるtoを指定する必
- 要がある.実際に送ったデータの長さを返す.
-
-Single Methods:
-
- open(domain, type, protocol)
- new(domain, type, protocol)
-
- 新しいソケットを生成する.domain,type,protocolはインクルード
- ファイルで定義されている定数値で指定する.domainとtypeに関して
- は,文字列で指定できるが,すべてをカバーしている保証はない.
-
- socketpair(domain, type, protocol)
-
- ソケットのペアを返す.引数の指定は openと同じである.
-
** Regexp(クラス)
正規表現のクラス.正規表現のリテラルは/.../という形式で表すが,動的に
@@ -3005,40 +2847,6 @@ Single Methods:
文字列の中の正規表現で意味を持つ文字をエスケープする.新しい文
字列を返す.
-** BasicSocket(クラス)
-
-ソケットを表す抽象クラス.具体的なソケット操作はサブクラスで定義される.
-例えばインターネットドメインの場合はTCPsocketを用いる.
-
-SuperClass: IO
-
-Methods:
-
- getopt(level, optname)
-
- ソケットのオプションを取得する.getsockopt(2)を参照のこと.取
- 得したオプションの内容を含む文字列を返す.
-
- getpeername
-
- 接続の相手先のソケットの情報を得る.パックされたsockaddr構造体
- をベタにダンプした文字列が返される.getpeername(2)を参照のこと.
-
- getsockname
-
- ソケットの情報を得る.パックされたsockaddr構造体をベタにダンプ
- した文字列が返される.getsockname(2)を参照のこと.
-
- setopt(level, optname, optval)
-
- ソケットのオプションを設定する.setsockopt(2)を参照のこと.
-
- shutdown(how)
-
- ソケットの以降の接続を終了させる.howが0である時,以降の受信が,
- howが1である時は,以降の送信が拒否される.howが2の時には,それ
- 以降の送信,受信ともに拒否される.shutdown(2)を参照.
-
** String(クラス)
文字列クラス.Rubyの文字列はヌルターミネートではないので,バイナリデー
@@ -3417,90 +3225,6 @@ Single Methods:
バで指定された名前の特異メソッドが定義されていて,そのメソッド
によってメンバの内容を得ることができる.
-** TCPserver(クラス)
-
-TCP/IPストリーム型接続のサーバ側のソケットのクラス.このクラスによって
-簡単にソケットを利用したサーバのプログラミングができる.例えばechoサー
-バは以下のようになる.
-
- gs = TCPserver.open(4444)
- socks = [gs]
-
- while TRUE
- nsock = select(socks);
- if nsock == nil; continue end
- for s in nsock[0]
- if s == gs
- socks.push(s.accept)
- else
- if s.eof
- s.close
- socks.delete(s)
- else
- str = s.gets
- s.write(str)
- end
- end
- end
- end
-
-SuperClass: TCPsocket
-
-Methods:
-
- accept
-
- クライアントからの接続要求を受け付け,接続したTCPsocketのイン
- スタンスを返す.
-
-Single Methods:
-
- new([host, ]service)
- open([host, ]service)
-
- serviceは/etc/services(またはNIS)に登録されているサービス名か
- ポート番号で指定する.hostを指定した時は指定したホストからの接
- 続だけを受け付ける.省略時は全てのホストからの接続要求を受け付
- ける.
-
-** TCPsocket
-
-インターネットドメインのストリーム型ソケットのクラス.通常のIOクラスの
-サブクラスと同様の入出力ができる.このクラスによってソケットを用いたク
-ライアントを簡単に記述できる.ユーザの入力をそのままサーバに転送するプ
-ログラムは以下のようになる.
-
- s = TCPsocket("localhost", 4444)
- while gets()
- s.write($_)
- print(s.read)
- end
-
-SuperClass: BasicSocket
-
-Methods:
-
- addr
-
- ソケットの接続情報を表す配列を返す.その配列の各要素は第1要素
- が文字列 "AF_INET",第2要素がport番号,第3要素がホストを表す文
- 字列である.
-
- peeraddr
-
- 接続相手先ソケットの情報を表す配列を返す.その配列の各要素は
- addrメソッドが返す配列と同じである.
-
-Single Methods:
-
- open(host, service)
- new(host, service)
-
- hostで指定したホストのserviceで指定したポートと接続したソケッ
- トを返す.hostはホスト名,またはインターネットアドレスを示す文
- 字列,serviceは/etc/services(またはNIS)に登録されているサービ
- ス名かポート番号である.
-
** Time(クラス)
時間を表すクラス.大小比較などができる.Time.nowで現在の時間を得ること
@@ -3624,49 +3348,6 @@ Single Methods:
時間の単位は秒であり,浮動小数点数で与えられる.詳細は
times(3)を参照のこと.
-** UNIXserver
-
-UNIXストリーム型接続のサーバ側のソケットのクラス.
-
-SuperClass: UNIXsocket
-
-Methods:
-
- accept
-
- クライアントからの接続要求を受け付け,接続したUNIXsocketのイン
- スタンスを返す.
-
-** UNIXsocket
-
-UNIXドメインのストリーム型ソケットのクラス.通常のIOクラスのサブクラス
-と同様の入出力ができる.
-
-SuperClass: BasicSocket
-
-Methods:
-
- addr
-
- ソケットの接続情報を表す配列を返す.その配列の各要素は第1要素
- が文字列 "AF_UNIX",第2要素がpathである.
-
- path
-
- UNIXソケットのパスを返す.
-
- peeraddr
-
- 接続相手先ソケットの情報を表す配列を返す.その配列の各要素は
- addrメソッドが返す配列と同じである.
-
-Single Methods:
-
- open(path)
- new(path)
-
- pathで指定したパス名を用いて接続したソケットを返す.
-
* C言語とのインタフェース
rubyはC言語とのインターフェースを提供し,C言語からのクラス,モジュール