今までブロックローカルにすることを意図していたコードは、Ruby 2.0では全部書き直しってことですね。ちょっとそこだけ面倒かなあ。機械的には書き換えられそうにないし。
- 通常の代入によって作られるローカル変数は(class,module,defが作る)スコープローカル変数
- ブロックパラメータはブロックローカル
- 以下のいずれか、または両方
- ブロックパラメータの後ろに「;」を置き、そこに続けた変数はブロックローカル変数
- 「:=」で代入した変数はブロックローカル変数
でもまあ、確かに前に戻って代入だけするのは非常に面倒かつ可読性を損なっていたので、この方がよりRubyらしくて好きです。賛成に一票。