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 method
x' for main:Object`
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)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With