Ruby accessing outer variables in nested function
Question
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?
Solution
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)
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow