use*_*008 41 ruby scope nested
我相信这有一个简单的答案; 我似乎无法找到它.我在Ruby中创建了一个嵌套函数,但我无法从内部函数内部的外部函数访问变量:
def foo(x)
def bar
puts x
end
bar
42
end
foo(5)
Run Code Online (Sandbox Code Playgroud)
我得到:NameError: undefined local variable or methodx'为main:Object`
类似的Python代码有效:
def foo(x):
def bar():
print x
bar()
return 42
foo(5)
Run Code Online (Sandbox Code Playgroud)
那么我如何在Ruby中做同样的事情呢?
tad*_*man 48
据我所知,在函数中定义命名函数不会让您访问任何局部变量.
你可以做的是使用Proc:
def foo(x)
bar = lambda do
puts x
end
bar.call
42
end
foo(5)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8022 次 |
| 最近记录: |