Ruby初心者スレッド Part 12
■ このスレッドは過去ログ倉庫に格納されています
0703デフォルトの名無しさん
2007/06/08(金) 18:15:07またはtrunkにあるrb_block_callを使うしか方法はありませんか?
Rubyで書いた例:
def method(argblk, &block)
method_deep(&argblk)
method_deep(&block)
end
Cで次のように記述したい:
VALUE func(VALUE self, VALUE argblk)
{
<ブロック付きメソッドを呼ぶAPI>(self, argblk, rb_intern("method_deep"), 0, 0);
<ブロック付きメソッドを呼ぶAPI>(self, rb_block_proc(), rb_intern("method_deep"), 0, 0);
}
rb_yieldの方がrb_funcall(... "call" ...)よりも実行コストが遥かに低く、rb_iterateや
rb_block_callは毎回新しいProcインスタンスを生成するので、再帰処理を
行うとき実行コストが馬鹿になりません。
どなたかおいしいAPIや、うまい方法があればご教授ください。
■ このスレッドは過去ログ倉庫に格納されています