From: matz@... (Yukihiro Matsumoto) Date: 1998-07-28T16:36:08+09:00 Subject: [ruby-list:8929] Re: nil + 1, or Integer.to_i まつもと ゆきひろです In message "[ruby-list:8927] Re: nil + 1, or Integer.to_i" on 98/07/28, Sinichiro Dezawa writes: |matz> Numeric#to_iとか,Integer#to_iとかの実装があれば良い問題なん |matz> ですか? 追加するのはそんなに難しくないですけど. |matz> # でも意味はなさそう. | |実装してないのに使えてしまうのはなぜ??? | 単なる疑問です。 え? [ruby-list:8926]でも述べたように実装はあります. FixnumとBignumにそれぞれ. | count{$1} = count{$1}.to_i + 1 |で逃げたら、期待通りになってしまったがなぜ? って話です。 1. Fixnum#to_iが定義されている(自分自身を返す) 2. NilClass#to_iが定義されている(0を返す) からです. |ですからもともとに遡れば、 | | Nil への + method を上手に定義する | |ってのが嬉しい。世の中の OOL 達はどうしてるのでしょうか。 そーですねえ.Objective-Cはnilにどんなメソッドを適用しても nilを返します.その他の言語はエラーにするものが多いように思 います. | Nil + operand のときの Nil の値は operand の型に合わせて | 0,"", [] と変化する。 |なんてのは、駄目ですか? | 思想が汚い。 実装が汚い。。。。。 昔はそうなってました(文字列,配列,数値の場合は右辺を返す). でも,これではエラーの検出が遅れるので望ましくないってことな んだと思います.いつぞやの提案のようにHashにデフォルト値を導 入するって手はありますけどね. # 以前は構造体に空間がないから採用しないって言ってたんですけ # ど,今日ソースを見てたらデフォルト値をしまうすき間を見つけ # ちゃいました.どーしようっかなあ. まつもと ゆきひろ /:|}