我确信这有一个简单的答案;我似乎无法找到它。我在Ruby中创建了一个嵌套函数,但我无法从内部函数中的外部函数访问变量:
def foo(x)
def bar
puts x
end
bar
42
end
foo(5)
我得到:NameError: undefined local variable or method
x'代表main:Object`
类似的Python代码有效:
def foo(x):
def bar():
print x
bar()
return 42
foo(5)
那么我如何在Ruby中做同样的事情呢?
答案 0 :(得分:47)
据我所知,在函数中定义一个命名函数并不能让你访问任何局部变量。
你可以做的是使用Proc:
def foo(x)
bar = lambda do
puts x
end
bar.call
42
end
foo(5)