ちょっと困ったバグ発見

x++ が x = x + 1; と等価なので、ローカルコンテキストに代入されちゃった例。

kz> x = 1;
  > 5 times:{|| x++ puts; };
  > 
1
1
1
1
1

本来ならこうしたい。

kz> x = 1;
  > 5 times:{|| x++ puts; };
  > 
1
2
3
4
5

関数を渡された 5 オブジェクトが関数起動しているので、this が 5 になっちゃっている例。

kz> 5 times:{|| this puts; };
  > 
5
5
5
5
5

本来ならこうなってほしい。

kz> 5 times:{|| this puts; };
  > 
#object: 1befab0
#object: 1befab0
#object: 1befab0
#object: 1befab0
#object: 1befab0