前川さん

高橋庸介といいます。
ずっとROMってて初登校です。

結論からすると

i = 0
a = 0
while i < 5
 a = a + i
 i += 1
end
puts a

が正解なのかもしれません。

>  a = a + i
としたときに最初にaがでてきて、aの中身がわからず(未定義状態)、+というメソッドがわからなく、メソッド未定義エラーになった。

上記は、最初に0と数値で初期化してあげて、これからaという変数は数値として使うよ、と宣言しただけです。
a=0 の一文だけ追加しましたが、これで
 if i == 0
   a = 0
 end
があったときと同じ結果にはなっています。

2009/08/17 16:29 に 前川 映一<eiichi_maekawa / mhi.co.jp> さんは書きました:
> 前川です。
>
> rubyは、script言語ということですが、
> いまひとつ、理解できていません。
>
> i = 0
> while i < 5
>  if i == 0
>    a = 0
>  end
>  a = a + i
>  i += 1
> end
> puts a
>
> では、正常に終了しますが、
>
> i = 0
> while i < 5
>  a = a + i
>  i += 1
> end
> puts a
>
> では、
> undefined method `+' for nil:NilClass (NoMethodError)
> Complete(1) エラーとなります。
>
> この違いは、i==0の条件で、a = 0 があるかないかですが、
>
> 変数aが実体化される場合の動作が、いまいち理解できていません。
> よろしくお願いします。
>
>
> 
>
>
>