シナリオがあります
func1 do
x='abc'
func2 do
puts x
end
end
このため、x = nil が得られます。なぜそうなのか、内部ブロックで x などの外部変数にアクセスする方法。
シナリオがあります
func1 do
x='abc'
func2 do
puts x
end
end
このため、x = nil が得られます。なぜそうなのか、内部ブロックで x などの外部変数にアクセスする方法。
「abc」は、func1 と func2 が渡したブロックを実行する場合 (yield または call) にのみ取得されます。
例をご覧ください
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