在ruby中访问嵌套块中的局部变量

时间:2013-08-24 06:49:43

标签: ruby

我有一个场景

func1 do 
  x='abc'
  func2 do
    puts x
  end
end

为此我得到x = nil。为什么会如此,以及如何在内部块中访问x之类的外部变量。

1 个答案:

答案 0 :(得分:1)

只有当func1和func2执行你传递给它们的块(屈服或调用)时,你才会得到“abc”。

查看示例

def func1
end

def func2
end

func1 do
  x = "Hello World"
  func2 do
    puts x
  end
end
#=> nil

def func3
  yield
end

def func4
  yield
end

func3 do
  x = "Hello World"
  func4 do
    puts x
  end
end
#=> Hello World