我确信这有一个简单的答案;我似乎无法找到它。我在Ruby中创建了一个嵌套函数,但我无法从内部函数中的外部函数访问变量:

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

foo(5)

我得到: NameError:未定义的局部变量或方法 x'for main:Object`

类似的Python代码有效:

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

foo(5)

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

有帮助吗?

解决方案

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

你可以做的是使用Proc:

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

foo(5)
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top