池澤さん

下記、ありがとうございます。
参考にさせていたただきます。m(_ _)m

ikezawa / nasuinfo.or.jp (ikezawa) wrote on 2009/08/19 10:04:43:

> 池澤といいます。

> On Mon, 17 Aug 2009 16:29:43 +0900
> "前川 映一" <eiichi_maekawa / mhi.co.jp> さん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
> # なるほど