Hi,
I am looking for a way to do the equivalent of the following ruby function in a C extension:
def foo(my_proc)
bar(&my_proc)
end
(and it should also work if bar is instance_eval or module_eval)
I couldn't find a way to do this, the only idea I have is to do something like:
def foo(my_proc)
bar { |arg| my_proc.call(arg) }
end
This can be done using rb_iterate, but it obviously doesn't work with instance_eval and module_eval.
Any ideas?
Dominik
Ok, thanks. That's what I thought.
I would like to have a function like
VALUE rb_iterate_proc(VALUE (*it_proc)(), VALUE data1, VALUE proc);
that would work like block_pass().
Btw. could we also get a version of rb_iter_break that breaks with a value instead of just nil?
Dominik
···
On Mon, 20 Feb 2006 01:01:28 +0100, Yukihiro Matsumoto <matz@ruby-lang.org> wrote:
HI,
In message "Re: Passing a proc as block to a method from a C extension" > on Sun, 19 Feb 2006 03:56:52 +0900, "Dominik Bathon" <dbatml@gmx.de> > writes:
>I am looking for a way to do the equivalent of the following ruby function
>in a C extension:
>
>def foo(my_proc)
> bar(&my_proc)
>end
>
>(and it should also work if bar is instance_eval or module_eval)
Currently there's no good way, since no one has complained loudly
before. Let me think about your request.