原です。 どうもループの中の局所変数の扱いが分からなくなってし まいました。 ------------^ test1.rb for i in 0..1 print defined?(j), "\n" j = 0 end ------------$ test1.rb を動かすと FALSE local-variable となるべきかと思うのですが、実際は FALSE FALSE と出力されます。これはなぜでしょう?さらに ------------^ test2.rb #j = 0 for i in 0..2 print "1)", defined?(j), "\n" j = -100 if FALSE print "2)", defined?(j), "\n" print "3)", j, "\n" j = j+1 end ------------$ test2.rb の結果は 1)FALSE 2)local-variable 3)nil 1)FALSE 2)local-variable 3)1 1)FALSE 2)local-variable 3)2 となります。「j = -100 if FALSE」で j が定義されるのは なぜでしょうか?さらに一辺、未定義になっても前回の値を 記憶しているのも不思議です。最初の行の j = 0 のコメント を外せば期待通りの出力ですが。