From: Sean O'Halpin Date: 2009-02-03T08:33:22+09:00 Subject: Re: Is this possible in Ruby On Mon, Feb 2, 2009 at 10:49 PM, Damjan Rems wrote: > > Just an idea which may come in handy. Can this be done and how in Ruby. > > def calc(what) > some_eval(what) > end > > a=10 > b=12 > calc('a+b') # expression as parameters > => 12 # would return > > a='aa' > b='bb' > calc('a+b') > => 'aabb' > > This is of course strictly hypothetical. I would like the expression to > be evaluated inside the method using variables which are local to the > calling part. > > > by > TheR ruby 1.9 comes with Binding#eval. In 1.8.6 you can do this: class Binding def eval(str) Kernel.eval(str, self) end end a = 10 b = 12 binding.eval('a + b') # => 22 def another(c, d) binding.eval('c + d') end another(20, 22) # => 42 Regards, Sean