aboutsummaryrefslogtreecommitdiffstats
path: root/README.EXT.ja
diff options
context:
space:
mode:
authorknu <knu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-02-16 05:54:17 +0000
committerknu <knu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-02-16 05:54:17 +0000
commit2b206be6acca2b0e5c2894860f578e087a4e3c5b (patch)
tree9a078c3124e6fd798a797080e4d9fa37072d03ed /README.EXT.ja
parent2a3d58d6924767433d296df187fc68e1d8485f0c (diff)
downloadruby-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.ja30
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)
{
:
}