- プログラミング言語 Rubyより
囲っているスコープの変数を意図せずに書き換えてしまう場合もある。特に、Ruby1.8のブロックのパラメータでは、この問題が起きやすい。Ruby1.8では、ブロックパラメータが既存の変数と同じ名前だと、ブロックが実行されたときに、新しいブロックローカルな変数が作られるのではなく、既存の変数に値が代入されてしまう。
- プログラミング言語 Ruby 第2版 148ページ ブロックと変数のスコープ
1.upto(10) do |i| 1.upto(10) do |i| print "{i} " end print " ==> Row #{i}\n" # 行番号を出力しているつもりだが、列番号になっている end