こんにちは、なかむら(う)です。

In message "[ruby-dev:29374] nil.to_s"
    on Sep.01,2006 18:30:03, <shugo / ruby-lang.org> wrote:
| trunkでnil.to_sが"nil"を返すように変更されたので、まつもとさんに
| 「本気ですか?」と聞いたらどうやら本気のようです。

ぎゃっ!


| 個人的には、nilは無・空を表すオブジェクトだと思っているので、文字
| 列に変換したら空文字列になるというのはそんなに違和感はないんです
| が、どうでしょう。
| そう考えると、整数に変換すると0というのも割と自然なんじゃないかと
| 思います。

全く同感です。


ちょっと整理してみましょうか。

1.8.5
  String(nil)  #=> ""
  Integer(nil) #=> 0
  Float(nl)    #=> TypeError
  nil.to_s     #=> ""
  nil.to_i     #=> 0
  nil.to_f     #=> 0.0

現時点での1.9
  String(nil)  #=> "nil"
  Integer(nil) #=> TypeError
  Float(nl)    #=> TypeError
  nil.to_s     #=> "nil"
  nil.to_i     #=> 0
  nil.to_f     #=> 0.0

前田さんのメールからの将来展望
  String(nil)  #=> "nil"(?)
  Integer(nil) #=> TypeError
  Float(nl)    #=> TypeError
  nil.to_s     #=> "nil"(?)
  nil.to_i     #=> NoMethodError
  nil.to_f     #=> NoMethodError(?)

正直、将来展望が一番納得いかない、というか、それならnil.to_s
もNoMethodErrorじゃないの? とかいう気がします。嫌ですけど。
というわけで、
  String(nil)  #=> TypeError
  Integer(nil) #=> TypeError
  Float(nl)    #=> TypeError
  nil.to_s     #=> ""
  nil.to_i     #=> 0
  nil.to_f     #=> 0.0
というあたりを希望します。


それでは。
-- 
U.Nakamura <usa / garbagecollect.jp>