summaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
Diffstat (limited to 'spec')
-rw-r--r--spec170
1 files changed, 82 insertions, 88 deletions
diff --git a/spec b/spec
index 42849d503b..cf7e3807c9 100644
--- a/spec
+++ b/spec
@@ -86,8 +86,8 @@ tab), CR(carriage return),改頁(form feed)である.改行(newline)は明ら
a +
b
-のように行が式の途中で終り,次の行に続くことが明白な場合を除き,式の区
-切りとしても認識される.
+のように行が式の途中で終り,次の行に続くことが明白な(最後の非空白文字
+が演算子あるいは`,'である)場合を除き,式の区切りとして認識される.
* プログラム
@@ -96,19 +96,17 @@ tab), CR(carriage return),改頁(form feed)である.改行(newline)は明ら
print "hello world!\n"
プログラムは式を並べたものである.式と式の間はセミコロン(`;')または改
-行で区切られる(※).
-
-※ 式が次の行に継続することが明白な時には改行は式の区切りにならない.
+行で区切られる.
* 式
-Rubyではnilが偽,それ以外が真と評価される.CやPerl などとは異なり,0や
+Rubyではnilが偽,それ以外が真と評価される.CやPerlなどとは異なり,0や
""(空文字列)は偽とは評価されないので気をつけること.
** 文字列式
- "..." # バックスラッシュの解釈と変数展開あり
- '...' # バックスラッシュの解釈なし(\\と\'は解釈する)
+ダブルクォート(`"')で括られた文字列はバックスラッシュに続く文字が以下
+のように解釈される.
バックスラッシュ記法
@@ -125,17 +123,14 @@ Rubyではnilが偽,それ以外が真と評価される.CやPerl などとは異なり,0や
\^c コントロール文字(cはASCII文字)
\C-c コントロール文字(同上)
\M-c メタ文字(c|0x80)
- \それ以外 文字そのもの
-
-文字列式は毎回新しい文字列オブジェクトを生成するので,文字列の内容を変
-更してももともとの文字列は変わらない.
+ \x 文字xそのもの
-変数展開
+また,`#'による変数展開も行われる.一方,シングルクォート(`'')で括られ
+た文字列は,`\\'(バックスラッシュそのもの)と`\''(シングルクォート)を除
+いて,文字列の中身の解釈を行わない.
-ダブルクォート(`"')で囲まれた文字列と正規表現の中では `#{変数名}'とい
-う形式で変数の内容を展開することができる.変数が変数記号(`$',`@')で始
-まる場合には`#変数名'という形式でも展開できる.文字`#'に続く文字が
-`{',`$',`@'でなければ,そのまま`#'として解釈される.
+文字列式は毎回新しい文字列オブジェクトを生成するので,文字列の内容を変
+更しても,もともとの文字列は変わらない.
** コマンド出力
@@ -146,7 +141,8 @@ Rubyではshのようにコマンドの実行結果を文字列リテラルのように使うことが
** 正規表現式
- /.../[i]
+`/'で囲まれた文字列は正規表現を表す.終りの`/'の後ろに文字`i'が与えら
+れた場合には,その正規表現はマッチ時に大文字小文字の区別をしない.
^ 行頭
$ 行末
@@ -168,8 +164,7 @@ Rubyではshのようにコマンドの実行結果を文字列リテラルのように使うことが
| 選択
( ) 正規表現をまとめる
-その他に文字列と同じバックスラッシュ記法や変数展開も有効である.正規表
-現の後ろにiがついた時には大文字小文字の違いを無視する.
+その他に文字列と同じバックスラッシュ記法や変数展開も有効である.
** ワイルドカード式
@@ -182,6 +177,14 @@ Rubyではshのようにコマンドの実行結果を文字列リテラルのように使うことが
その他に文字列と同じバックスラッシュ記法や変数展開も有効である.
+** 変数展開
+
+ダブルクォート(`"')で囲まれた文字列式,コマンド文字列,正規表現,およ
+びワイルドカード式の中では`#{変数名}'という形式で変数の内容を展開する
+ことができる.変数が変数記号(`$',`@')で始まる場合には`#変数名'という形
+式でも展開できる.文字`#'に続く文字が `{',`$',`@'でなければ,そのまま
+文字`#'として解釈される.
+
** 数値リテラル
123 整数
@@ -237,11 +240,11 @@ Rubyの変数はスコープ(有効範囲)と寿命(有効期限)によって4種類に分類され,
FOOBAR
-大文字で始まる識別子ははクラス定数へのアクセスであり,そのクラスと全て
-のサブクラスのインスタンスから参照できる.この定数へはトップレベル,す
-なわちメソッドが定義できるレベルでのみ代入可能である.この変数はクラス
-間で値が共有され,一度代入すると値を変更することができない.クラス定数
-の寿命はクラスの寿命と等しい.
+大文字で始まる識別子はクラス定数へのアクセスであり,そのクラスと全ての
+サブクラスのスコープ内で参照できる.定数への代入はトップレベル,すなわ
+ちメソッドが定義できるレベルでのみ可能である.この変数はクラス間で値が
+共有され,一度代入すると値を変更することができない.クラス定数の寿命は
+クラスの寿命と等しい.
クラス定義は自動的に定数を定義するので,クラス名は定数である.
@@ -254,8 +257,10 @@ Rubyの変数はスコープ(有効範囲)と寿命(有効期限)によって4種類に分類され,
小文字または`_'で始まる識別子はローカル変数へのアクセスである.初期化
されないローカル変数の値はnilである
-ローカル変数のスコープは寿命もそのブロックの終りまで(トップレベルのロー
-カル変数はプログラムの終了まで)である.
+ローカル変数のスコープはブロックの範囲内(メソッド内ではメソッドの終り
+まで,クラス/モジュール定義内ではその定義の終りまで)である.寿命もその
+ブロックの終りまで(トップレベルのローカル変数はプログラムの終了まで)で
+ある.
*** 疑似変数
@@ -274,7 +279,6 @@ Rubyの変数はスコープ(有効範囲)と寿命(有効期限)によって4種類に分類され,
例:
(1+2)*3
- (foo();bar())
式は括弧によってグルーピングすることができる.
@@ -352,10 +356,12 @@ Rubyの変数はスコープ(有効範囲)と寿命(有効期限)によって4種類に分類され,
foo -1 # ローカル変数foo - 1
レシーバを指定したメソッド呼び出しではの場合引数が1つもない時にも括弧
-を省略できる.
+を省略できる(レシーバを指定しない場合,括弧をつけないとローカル変数の
+参照として解釈される).
-メソッド名としては任意の識別子を用いることができる.変数名とは識別子の
-名前空間が違うので重複しても構わない.
+メソッド名としては任意の識別子を用いることができる.最初の文字は大文字
+でも小文字でも構わない.変数名とは識別子の名前空間が違うので重複しても
+構わない.
クラス定義文の外で指定されたメソッドとクラスModuleのunexportメソッドで
指定されたメソッドは関数的メソッドと呼ばれ,関数形式でしか呼び出すこと
@@ -516,9 +522,9 @@ Rubyの変数はスコープ(有効範囲)と寿命(有効期限)によって4種類に分類され,
配列要素の代入( 式1 `[' 式2.. `]' `=' 式n)
- 式1. `[]=' (式2..)
+ 式1. `[]=' (式2.., 式n)
-それ以外の2項演算子(式 演算子 式)
+それ以外の2項演算子(式1 演算子 式2)
式1. 演算子 (式2)
@@ -535,9 +541,9 @@ Rubyの変数はスコープ(有効範囲)と寿命(有効期限)によって4種類に分類され,
式.. ]
end
-条件判断式.式1が真の場合に式1を評価する.それ以外の場合は式2を評価す
-る.Rubyのif式はelse ifでもelifでもなくelsifでifの連続を行なうことに注
-意すること.
+条件判断式.Rubyのif式はelse ifでもelifでもなくelsifでifの連続を行なう
+ことに注意すること.条件が成立して実行した式の値を返す.実行しなかった
+場合の値はnil.
ifの条件判断部の式では文字列と正規表現リテラルは式「$_=~ リテラル」の
省略であるとみなされる.
@@ -613,9 +619,8 @@ orの両辺の式では文字列と正規表現リテラルは式「$_=~ リテラル」の省略で
式1が真になるまでは偽を返し,その後は式2が真を返すまでは真を返す.式2
が真になれば状態は偽に戻る.
-演算子`...'の両辺は条件式であり,更に `...'の両辺の式では文字列と正規
-表現リテラルは式「$_=~ リテラル」の省略,整数定数が「$.==定数」の省略
-と解釈される.
+`...'の両辺の式では文字列と正規表現リテラルは式「$_=~ リテラル」の省略,
+整数定数は「$.==定数」の省略と解釈される.
** NOT 式
@@ -626,7 +631,6 @@ orの両辺の式では文字列と正規表現リテラルは式「$_=~ リテラル」の省略で
`!'式では文字列と正規表現リテラルは式「$_=~ リテラル」の省略であるとみ
なされる.
-
式1 `!=' 式2
「!(式1 == 式2)」の省略形
@@ -663,9 +667,6 @@ whileの条件判断部の式では文字列と正規表現リテラルは式「$_=~ リテラル」
イテレータの呼び出しは以下の構文で行なわれる.
-イテレータとは制御構造(特にループ)の抽象化のために用いられるメソッドの
-一種である.イテレータの呼び出しは以下の構文で行なわれる.
-
式 `{' 左辺式.. `|' 式.. `}'
「式」をブロックとして設定し,「式」のメソッドをイテレータとして評価す
@@ -673,7 +674,7 @@ whileの条件判断部の式では文字列と正規表現リテラルは式「$_=~ リテラル」
レシーバを表す式や,引数の式はイテレータとしては呼び出されない.「式」
が複数の式を含む時,各々がイテレータとして順に呼ばれる.
-イテレータ内でyield式が実行されると,そこで指定された値がdo式で指定さ
+イテレータ内でyield式が実行されると,そこで指定された値が左辺式で指定さ
れた変数に代入され,ブロックが実行される.ブロックの実行が終了するとそ
の値は yield式の値として返される.あるメソッドがイテレータとして呼び出
されたかどうかはメソッドiterator_p()の戻り値で知ることができる.中には
@@ -714,11 +715,12 @@ yieldの引数の括弧は曖昧でない限り省略できる.
例外を発生させる.メッセージが与えられた場合には発生したソースファイル
名,行番号をシステム変数`$@'に,メッセージを`$!'にセットする.
-failの引数の括弧は曖昧でない限り省略できる.
+failの引数の括弧は省略できる.
** BEGIN
-複数の式をまとめるためにbegin式がある.begin式の形式は以下の通りである.
+複数の式をまとめるためと例外所理のためにbegin式がある.begin式の形式は
+以下の通りである.
begin
式..
@@ -729,10 +731,10 @@ failの引数の括弧は曖昧でない限り省略できる.
end
begin式の値は一番最後に評価された式の値である.begin式の処理中に発生し
-た時に例外はresque節で捕獲することが出来る.この場合の値はresque部で最
-後に評価した式の値である.更にensure節が存在する時はbegin式を終了する
-前に必ず(正常終了時だけでなく,例外, return, break, continue, redoなど
-による脱出でも)ensure節の式を評価する.
+た時に例外はresque節で捕獲することが出来る.この場合の値begin式の値は
+はresque部で最後に評価した式の値である.更にensure節が存在する時は
+begin式を終了する前に必ず(正常終了時だけでなく,例外, return, break,
+continue, redoなどによる脱出でも)ensure節の式を評価する.
** RETURN
@@ -750,6 +752,7 @@ break はループを脱出する.Cと違い,breakはもっとも内側のループを脱出す
る作用だけを持ち,case を抜ける作用は持たない.
** CONTINUE
+
continue
continueはもっとも内側のループの次の繰り返しを始める.
@@ -776,8 +779,7 @@ begin式のresque節で使い,begin式を始めから実行する.例外処理を行なって
定義実体
end
-クラス名は任意の識別子である(大文字で始めることを推奨する).クラス定義
-のネストはできないので他の定義式内ではクラスを定義できない.
+クラス名は大文字で始まる識別子である.
** モジュール定義
@@ -787,8 +789,7 @@ begin式のresque節で使い,begin式を始めから実行する.例外処理を行なって
定義実体
end
-モジュール名は大文字で始まる識別子である.クラス同様,モジュール定義も
-ネストできない.
+モジュール名は大文字で始まる識別子である.
** メソッド定義
@@ -830,23 +831,22 @@ begin式のresque節で使い,begin式を始めから実行する.例外処理を行なって
る必要がある.通常メソッド定義とは異なり,特異メソッドはメソッド本体内
でもネストして定義することができる.
-特異メソッドは通常は継承しえないが,例外としてクラスの特異メソッドはそ
-のサブクラスにも継承される.言い替えればクラスの特異メソッドは他のオブ
-ジェクト指向システムにおけるクラスメソッドの働きをする.
+特異メソッドは通常は継承しないが,例外としてクラスの特異メソッドはその
+サブクラスにも継承される.言い替えればクラスの特異メソッドは他のオブジェ
+クト指向システムにおけるクラスメソッドの働きをする.
** INCLUDE
モジュールをインクルードすることによって,クラスまたはモジュールに機能
-を追加できる.モジュールをインクルードした場合,そのモジュール(および
-そのモジュールが更にインクルードしているモジュール)の全てのメソッドを
-受け継ぐ.別のいい方をすればインクルードは限定された多重継承といえる.
-
-他のモジュールをインクルードする構式は以下の通りである.
+を追加できる.現在の定義中のクラスまたはモジュール(トップレベルでは
+Objectクラス)に指定したモジュールをインクルードする構式は以下の通りで
+ある.
include モジュール名 [`,' モジュール名..]
-現在の定義中のクラスまたはモジュール(トップレベルではObjectクラス)に指
-定したモジュールをインクルードする.
+モジュールをインクルードすると,そのモジュール(およびそのモジュールが
+更にインクルードしているモジュール)の全てのメソッドを受け継ぐ.別のい
+い方をすればインクルードは限定された多重継承(Mixin)といえる.
** ALIAS
@@ -855,8 +855,8 @@ begin式のresque節で使い,begin式を始めから実行する.例外処理を行なって
alias メソッド名1 メソッド名2
別名を付けられたメソッドは,その時点でのメソッド定義を引き継ぎ,元のメ
-ソッドが再定義されても,古いメソッドが呼び出されたのと全く同じ働きをす
-る.
+ソッドが再定義されても,再定義前の古いメソッドが呼び出されたのと全く同
+じ働きをする.
** UNDEF
@@ -866,10 +866,10 @@ begin式のresque節で使い,begin式を始めから実行する.例外処理を行なって
指定したメソッドの定義を取り消す.
-defによる別名定義とundefによる定義取り消しを使うとクラスのインタフェー
-スをスーパークラスと独立に変更することができる.ただし,メソッドがself
-にメッセージを送っている場合もあるので,よく注意しないと既存のメソッド
-が動作しなくなる可能性がある.
+defによる別名定義とundefによる定義取り消しによってクラスのインタフェー
+スをスーパークラスと独立に変更することができる.ただし,メソッドがself
+ にメッセージを送っている場合もあるので,よく注意しないと既存のメソッ
+ドが動作しなくなる可能性がある.
* 組み込み関数
@@ -922,10 +922,6 @@ Rubyには厳密な意味では関数はないがKernelクラスの関数メソッドは(全ての
標準入力から一文字取り出す.戻り値は読み込んだ文字の文字コード
(ASCII)を表すFixnumである.
- getenv(name)
-
- nameに該当する環境変数を取り出す.$ENV[name]と同義.
-
gets()
引数として与えられたファイル(なければ標準入力)で構成される仮想
@@ -1028,11 +1024,6 @@ Rubyには厳密な意味では関数はないがKernelクラスの関数メソッドは(全ての
nil,そうでないときは3要素の配列を返し,その各要素が入力/出力/
例外待ちのオブジェクトを要素として持つ.
- setenv(name, value)
-
- nameで指定される環境変数をvalueにセットする.$ENV[name]=value
- と同じ働きをする.
-
sleep([sec])
sec秒だけプログラムの実行を停止する.secが省略された場合,プロ
@@ -1175,10 +1166,6 @@ Rubyには厳密な意味では関数はないがKernelクラスの関数メソッドは(全ての
$DEBUG `-d'フラグの状態(真偽値).
- $ENV 環境変数にアクセスする連想配列.文字列をキーとして与え
- ると対応する環境変数の値が得られる.環境変数が存在しな
- い場合はnilが返る.
-
$FILENAME 仮想ファイル`$<'で現在読み込み中の(メソッドgets()が今
読んでいる)ファイル名.$<.filenameと同じ.
@@ -1190,9 +1177,6 @@ Rubyには厳密な意味では関数はないがKernelクラスの関数メソッドは(全ての
$VERBOSE `-v'フラグの状態(真偽値)
- $VERSION rubyのバージョンを示す文字列
-
-
TRUE t
FALSE nil
@@ -1212,6 +1196,16 @@ Rubyには厳密な意味では関数はないがKernelクラスの関数メソッドは(全ての
は完全には同義ではない.FALSEに関しては,このような問題は生じ
ない.
+ STDIN 標準入力
+ STDOUT 標準出力
+ STDERR 標準エラー出力
+
+ ENV 環境変数にアクセスする連想配列.文字列をキーとして与え
+ ると対応する環境変数の値が得られる.環境変数が存在しな
+ い場合はnilが返る.
+
+ VERSION rubyのバージョンを示す文字列
+
* 組み込みクラスとモジュール
** Array(クラス)
@@ -3867,9 +3861,9 @@ Rubyの言語仕様は数多くの言語の影響を受けている. 以下にあげるのはその主
C, Perl, CLU, Sather, CLOS, Eiffel, Icon, tcl, AWK, bourne shell,
Smalltalk, Emacs Lisp.
-またrubyの言語仕様を決定するために協力して下さった方々を以下にあげる
+またrubyの言語仕様を決定するために協力して下さった方々を以下にあげる.
- 石塚圭樹,大庭康生,伊藤純一郎,中村@NEC.関根@日本DEC,
+ 石塚圭樹,大庭康生,伊藤純一郎,中村@NEC.関根@日本DEC,
たなか@赤坂.富士通(敬称略).
-------------------------------------------------------
Local variables: