Rubyの拡張ライブラリー入門シリーズ⑤ (メソッド呼び出し: rb_funcall)
メソッドの呼び出し方法
メソッドはrb_funcall()
で呼び出します。
VALUE rb_funcall(レシーバー, mid, 引数の数, 引数...);
というふうにします。
mid
はメソッドのIDで、rb_intern()
で取得できるので、
VALUE rb_funcall(レシーバー, rb_intern("メソッド名"), 引数の数, 引数...);
というふうにします。
例
hello = "Hello, world" Kernel.p(hello)
このRubyのプログラムをC言語に書き換えると以下のようになります。
#include <ruby.h> void Init_Test(void){ VALUE hello = rb_str_new2("Hello, world!!"); rb_funcall(rb_mKernel, rb_intern("p"), 1, hello); }