ブロックパラメータは外部から継承
Rubyでは、ブロックパラメータと同じ名前の変数が前にあったらそれを使います。ブロックパラメータは新しいスコープを作るわけではないのでしょうか。これはちょっと驚きです。
a = [ 1, 2, 3 ] rubyco = 100 p rubyco # => 100 a.each { |rubyco| # ... } p rubyco # => 3
もしも前になかったら、外に飛び出せるわけではないようです。
a = [ 1, 2, 3 ] a.each { |rubyco| p rubyco } p rubyco
実行結果はこうなります。
1 2 3 undefined local variable or method `rubyco' for main:Object (NameError)