Ruby のブロックつきメソッドを C から呼び出す方法 - Weblog and logic, or magic Ruby の拡張ライブラリを書いていて、Ruby のブロックつきメソッドを C から呼び出す方法が 分からなかったので調べてみました。 たとえば、Array#each メソッド。 [1, 2, 3].each do |item| p item end これを C から呼び出して、配列の各要素にたいして何か処理を行うには、rb_iterate 関数を使います。 eval.c VALUE rb_iterate(it_proc, data1, bl_proc, data2) VALUE (*it_proc) _((VALUE)), (*bl_proc)(ANYARGS); VALUE data1, data2; rb_iterate 関数は以下のような処理を行います。 まず、dat