好き勝手に・げーあにん?

ファミコンと同い年の社会人ヌルオタの日記

1.9.0リリース

安定板じゃないから Cygwin には入らないかな? Cygwinに取り込まれるんだったら仕事用のツールも対応したいんだけど。*1

実は YARV が入ったのと、スコープが変わったらしいということしか知らない私が通りますよっと。イテレーター関連は実際に使う場面が来たら覚えよ。

とりあえず、影響が大きいかもしれないスコープだけ確認。

i = -1
0.upto(9) do |i|
end
puts i

が、1.8.x までは 「9」だったのが、1.9 以降は 「-1」になると。

C++ でいえば、

int i = -1;
for (i = 0; i < 9; ++i) {
}
printf("%d\n", i);

だったのが、

int i = -1;
for (int i = 0; i < 9; ++i) {
}
printf("%d\n", i);

になったと。

ループだけ見ると「気持ち悪っ!」とか思ってしまうんだけど、

puts "\##{RUBY_VERSION}"

i = -1
proc = Proc.new do |i|
  Proc.new do
    puts i
  end
end

proc_array = [proc[10], proc[11]]
proc_array.each do |pr|
  pr.call
end
puts i

だと、

#1.8.5
11
11
11
#1.9.0
10
11
-1

スッキリ。

心置きなくクロージャが使えますね。まぁ、このために変わったんですよね。たぶん。私の中での Proc#binding ブームの火が更に燃え上がろうとしている。つか、仕事場のマシン 1.8.5 かよ(苦笑)。ツール作るのにしか使ってないからいいけど。

あと、前の日記に書いた奴が、動かなくなったので注釈で追記しといた。

私の中での Proc#binding ブームの火が更n(ry

*1:仕事では Cygwin 版を良く使っている