■例 ブロックには変数をシャドーウィングする機能がない
['foo'].each do |i| ← この i と
___['bar'].each do |i| ← このiが同じ名前だけど別の変数になること
______print i ← これは ['bar']に対する each なので当然 'bar'
___end
___print i ← ['bar'].each のブロックを実行したためにi の内容が変更されている
end
内側のprint で bar
外側のprint でも bar が出力されるので、結果は 'barbar' になる。
なお、この仕様はruby1.9で変更されている
['foo'].each do |i| ← この i と
___['bar'].each do |i| ← このiが同じ名前だけど別の変数になること
______print i ← これは ['bar']に対する each なので当然 'bar'
___end
___print i ← ['bar'].each のブロックを実行したためにi の内容が変更されている
end
内側のprint で bar
外側のprint でも bar が出力されるので、結果は 'barbar' になる。
なお、この仕様はruby1.9で変更されている