From: Jim Weirich Date: 2006-02-09T07:33:53+09:00 Subject: how to do instance_eval with arguments I'm prototyping a DSL and came across a situtation where I have a lambda that I would like to give to instance_eval, but the lambda takes arguments. Instance_eval will not supply any arguments when evaluating the lambda and I don't see a straightforward way around this. Any suggestions? Here's a test case ... class Dummy def f :dummy_value end end def instance_eval_with_args(obj, *args, &block) # Magic goes here to evaluate +block+ in the scope of # +obj+, yet pass a list of argument values to the block. end class TestInstanceEvalWithArgs < Test::Unit::TestCase def test_instance_eval_with_args # Create a block that returns the value of an argument and a value # of a method call to +self+. This is the basic functionality I need. block = lambda { |a| [a, f] } assert_equal [:arg_value, :dummy_value], instance_eval_with_args(Dummy.new, :arg_value, &block) end end -- -- Jim Weirich -- Posted via http://www.ruby-forum.com/.