I'm sure there's a simple answer for this; I just can't seem to find it. I made a nested function in Ruby, and I was having trouble accessing variables from the outer function inside the inner function:
def foo(x) def bar puts x end bar 42 end foo(5)
I get: NameError: undefined local variable or methodx' for main:Object`
NameError: undefined local variable or method
The analogous Python code works:
def foo(x): def bar(): print x bar() return 42 foo(5)
So how do I do the same thing in Ruby?
As far as I know, defining a named function within a function does not give you access to any local variables.
What you can do instead is use a Proc:
def foo(x) bar = lambda do puts x end bar.call 42 end foo(5)
2.1m questions
2.1m answers
60 comments
57.0k users