Jan-Erik R.
2/6/2009 7:17:00 PM
Jonathan Wills schrieb:
> Trying to switch a project of mine from python to ruby. Love ruby so
> far, but I'm finding that the eval statement is a bit more difficult to
> use than python's exec statement. Here is one of the problems I'm
> having, RUBY_VERSION=1.9.1
>
> a = 1
> eval('a=2')
> puts a
>
> This will print out '2', as I want. However if I remove the first line,
>
> eval('a=2')
> puts a
>
> r.rb:2:in `<main>': undefined local variable or method `a' for
> main:Object (NameError)
>
>
> Now if in the first case eval can change a variable in its scope, why
> can't it also create a variable in that same scope? I may also not be
> totally clear on the way ruby handles scoping, which might be part of
> what I am having trouble understanding.
>
> Any help understanding the eval statement would be appreciated. I will
> probably have more questions about it, but I'll leave at this for now.
>
> thanks,
> -Jonathan
why do you want to use eval?
eval is evil and in most cases not needed in Ruby