diff options
author | knu <knu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-02-16 05:54:17 +0000 |
---|---|---|
committer | knu <knu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-02-16 05:54:17 +0000 |
commit | 2b206be6acca2b0e5c2894860f578e087a4e3c5b (patch) | |
tree | 9a078c3124e6fd798a797080e4d9fa37072d03ed /README.EXT.ja | |
parent | 2a3d58d6924767433d296df187fc68e1d8485f0c (diff) | |
download | ruby-2b206be6acca2b0e5c2894860f578e087a4e3c5b.tar.gz |
Improve documentation of rb_scan_args().
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22335 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'README.EXT.ja')
-rw-r--r-- | README.EXT.ja | 30 |
1 files changed, 22 insertions, 8 deletions
diff --git a/README.EXT.ja b/README.EXT.ja index a4c8447d13..d7a688f721 100644 --- a/README.EXT.ja +++ b/README.EXT.ja @@ -767,20 +767,34 @@ fdbm_s_open(int argc, VALUE *argv, VALUE klass) この配列で与えられた引数を解析するための関数がopen()でも使わ れているrb_scan_args()です.第3引数に指定したフォーマットに -従い,第4変数以降に指定した変数に値を代入してくれます.この -フォーマットは,第1文字目が省略できない引数の数,第2文字目が -省略できる引数の数,第3文字目が対応する相手が無いあまりの引 -数があるかどうかを示す"*"です.2文字目と3文字目は省略できま -す.dbm.cの例では,フォーマットは"11"ですから,引数は最低1つ +従い,第4変数以降に指定した変数(の参照)に値を代入してくれます. +このフォーマットは,ABNFで記述すると以下の通りです. + +-- +scan-arg-spec := param-arg-spec [block-arg-spec] + +param-arg-spec := pre-arg-spec [post-arg-spec] / post-arg-spec +pre-arg-spec := num-of-leading-mandatory-args [num-of-optional-args] +post-arg-spec := sym-for-variable-length-args +block-arg-spec := sym-for-block-arg + +num-of-leading-mandatory-args := DIGIT ; -- 先頭に置かれる省略不可能な引数の数 +num-of-optional-args := DIGIT ; -- 続いて置かれる省略可能な引数の数 +sym-for-variable-length-args := "*" ; -- 続いて置かれる可変長引数をRubyの配列で + ; 取得するための指定 +sym-for-block-arg := "&" ; -- イテレータブロックを取得するための指定 +-- + +dbm.cの例では,フォーマットは"11"ですから,引数は最低1つ で,2つまで許されるという意味になります.省略されている時の 変数の値はnil(C言語のレベルではQnil)になります. -Rubyの配列で引数を受け取るものはindexesがあります.実装はこ -うです. +最後に、引数をRubyの配列として受け取るものにはThread#initializeがあります. +実装はこうです. -- static VALUE -fdbm_indexes(VALUE obj, VALUE args) +thread_initialize(VALUE thread, VALUE args) { : } |