From: ts Date: 2006-04-15T18:42:26+09:00 Subject: Re: Calling instance_eval on a block in C >>>>> "J" == John Lam writes: J> def eval_it(obj, &b) J> obj.instance_eval(&b) J> end moulon% cat a.c #include static VALUE a_eval_it(VALUE obj, VALUE a) { return rb_obj_instance_eval(0, 0, a); } void Init_a() { VALUE a_cA = rb_define_class("A", rb_cObject); rb_define_method(a_cA, "eval_it", a_eval_it, 1); } moulon% moulon% ruby -ra -e 'b = Object.new; A.new.eval_it(b) {p self; @b = 12}; p b' # # moulon% Guy Decoux