-
int rb_scan_args(int argc, const VALUE *argv, const char *fmt, ...)
-
長さ argc の配列 argv を fmt に従って解析し、第四引数以降で渡されたアドレスに書き込みます。
fmt のフォーマットは以下の通りです。
- 必須引数の数 (省略可能な引数があるなら省略不可)
- 省略可能な引数の数 (ゼロ個ならば省略可)
- 残りの引数を Ruby の配列として受け取ることを示す '*' (省略可)
- 最後の引数をオプションハッシュとして受け取る事を示す ':' (省略可)
- ブロックを Proc オブジェクト化して受け取ることを示す '&' (省略可)
これらの指定文字はそれぞれ省略可能ですが、必ずこの順番で現れなければいけません。
使用例
VALUE a, b, optv; rb_scan_args(argc, argv, "21", &a, &b, &optv);
対応する Ruby プログラムでの宣言
def some_method(a, b, opt = nil)
使用例 (2)
VALUE a, rest, block; rb_scan_args(argc, argv, "1*&", &a, &rest, &block);
対応する Ruby プログラムでの宣言
def some_method(a, *rest, &block)
[SEE_ALSO] https://github.com/ruby/ruby/blob/master/doc/extension.ja.rdoc