-
VALUE rb_funcall_passing_block(VALUE recv, ID mid, int argc, const VALUE *argv) -
rb_funcallv_public と同じですが、現在のメソッドが受け取ったブロックを、呼び出すメソッドのブロックとして渡します。
使用例foo(x, y, &z)のようなメソッドが、受け取ったブロックをそのまま別のメソッドへ渡したいときに使います。/* def foo(x, y, &z) * x.open(y, &z) * end * に相当する C の関数 */ VALUE foo_translated_into_C(VALUE self, VALUE x, VALUE y) { ID open = rb_intern("open"); return rb_funcall_passing_block(x, open, 1, &y); }- [PARAM]
recv: - メソッドのレシーバです。
- [PARAM]
mid: - 呼び出すメソッドの名前です。
- [PARAM]
argc: -
argvの要素数です。 - [PARAM]
argv: - メソッドに渡す引数の配列です。
- [RETURN]
- 呼び出したメソッドの返り値です。
- [EXCEPTION]
NoMethodError: - メソッドがないとき、またはメソッドが private か protected のとき。
- [EXCEPTION]
Exception: - 呼び出したメソッドの中で例外が発生したとき。