Ruby在嵌套函数中访问外部variables

我确信这个问题有一个简单的答案。 我似乎无法find它。 我在Ruby中做了一个嵌套的函数,并且在内部函数中从外部函数访问variables时遇到了问题:

def foo(x) def bar puts x end bar 42 end foo(5) 

我得到: NameError: undefined local variable or method x'为主:对象

类似的Python代码工作:

 def foo(x): def bar(): print x bar() return 42 foo(5) 

那么我如何在Ruby中做同样的事情呢?

据我所知,在一个函数中定义一个命名函数并不能让你访问任何局部variables。

你可以做的是使用Proc:

 def foo(x) bar = lambda do puts x end bar.call 42 end foo(5)