From: ikezawa@... (ikezawa) Date: 2009-08-19T10:04:43+09:00 Subject: [ruby-list:46299] Re: rubyの変数の扱いについて 池澤といいます。 On Mon, 17 Aug 2009 16:29:43 +0900 "前川 映一" さんwrites: --略-- > a = a + i > undefined method `+' for nil:NilClass (NoMethodError) > Complete(1) エラーとなります。 > --略-- 「プログラミングRuby」(ISBN978-4-87311-394-4) P91 には | 4.2 変数参照 |  変数とは、単純に値につけられた名前のことである。変数を作成するのは代入式で、 |このときに値も代入される。..(以下略) と書いてあります。 Rubyリファレンスマニュアルの「変数」のページには v = 1 if false というおもしろい例があげられています。 http://www.ruby-lang.org/ja/man/html/ で、やってみました。 C:\>ruby -v ruby 1.8.7 (2009-06-12 patchlevel 174) [i386-mswin32] C:\>irb --simple-prompt >> v = 1 if false => nil >> defined?(v) => "local-variable" >> v.class => NilClass # # じゃこういうのはどうかな? >> x = x + 1 NoMethodError: undefined method `+' for nil:NilClass # NilClassのnilに'+'というメソッドは定義されていない・・ # # x の定義自体は成功してるということか? >> defined?(x) => "local-variable" >> x.class => NilClass # なるほど # じゃこういうのはいけるのかな? >> y = y.to_i + 1 => 1 # おっ! >> defined?(y) => "local-variable" >> y.class => Fixnum # こんなのもいけるかな? >> var = var => nil >> defined?(var) => "local-variable" >> var.class => NilClass # なるほど