Ruby accessing outer variables in nested function
nested, ruby, scope
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)
Problem
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?