From 2b206be6acca2b0e5c2894860f578e087a4e3c5b Mon Sep 17 00:00:00 2001 From: knu Date: Mon, 16 Feb 2009 05:54:17 +0000 Subject: Improve documentation of rb_scan_args(). git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22335 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- README.EXT.ja | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) (limited to 'README.EXT.ja') 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) { : } -- cgit v1.2.3