红宝石访问嵌套函数外的变量(Ruby accessing outer variables in ne

2019-06-23 15:35发布

我敢肯定有一个简单的答案此; 我似乎无法找到它。 我在红宝石制成的嵌套函数,我有麻烦从内函数内部的外功能访问变量:

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

foo(5)

我得到: NameError: undefined local variable or method X”主:Object`

类似的Python代码的工作:

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

foo(5)

所以,我该怎么做在Ruby中同样的事情?

Answer 1:

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

你可以做的反而是使用一个Proc:

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

foo(5)


文章来源: Ruby accessing outer variables in nested function