我有一个场景
func1 do
x='abc'
func2 do
puts x
end
end
为此我得到x = nil。为什么会如此,以及如何在内部块中访问x之类的外部变量。
答案 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