[#29374] nil.to_s — Shugo Maeda <shugo@...>

前田です。

59 messages 2006/09/01
[#29375] Re: nil.to_s — "U.Nakamura" <usa@...> 2006/09/01

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

[#29380] Re: nil.to_s — Yukihiro Matsumoto <matz@...> 2006/09/01

まつもと ゆきひろです

[#29387] Re: nil.to_s — Shugo Maeda <shugo@...> 2006/09/01

前田です。

[#29390] Re: nil.to_s — Yukihiro Matsumoto <matz@...> 2006/09/01

まつもと ゆきひろです

[#29398] Re: nil.to_s — "NARUSE, Yui" <naruse@...> 2006/09/01

成瀬です。

[#29400] Re: nil.to_s — Yukihiro Matsumoto <matz@...> 2006/09/01

まつもと ゆきひろです

[#29491] symbol and string — Tanaka Akira <akr@...>

open-uri で :proxy=>nil という指定を行うと、以下のようにエラーになります。

33 messages 2006/09/05
[#29499] Re: symbol and string — Yukihiro Matsumoto <matz@...> 2006/09/05

まつもと ゆきひろです

[#29500] Re: symbol and string — Tanaka Akira <akr@...> 2006/09/05

In article <1157470154.047826.13379.nullmailer@x31.priv.netlab.jp>,

[#29503] Re: symbol and string — Yukihiro Matsumoto <matz@...> 2006/09/06

まつもと ゆきひろです

[#29504] Re: symbol and string — Tanaka Akira <akr@...> 2006/09/06

In article <1157505538.340126.8472.nullmailer@x31.priv.netlab.jp>,

[#29507] Re: symbol and string — Yukihiro Matsumoto <matz@...> 2006/09/06

まつもと ゆきひろです

[#29512] Re: symbol and string — keiju@... (石塚圭樹) 2006/09/06

けいじゅ@いしつかです.

[#29529] Re: symbol and string — SASADA Koichi <ko1@...> 2006/09/08

 ささだです。

[#29530] Re: symbol and string — Yukihiro Matsumoto <matz@...> 2006/09/08

まつもと ゆきひろです

[ruby-dev:29384] Re: nil.to_s

From: "U.Nakamura" <usa@...>
Date: 2006-09-01 12:54:58 UTC
List: ruby-dev #29384
こんにちは、なかむら(う)です。

In message "[ruby-dev:29380] Re: nil.to_s"
    on Sep.01,2006 20:31:37, <matz@ruby-lang.org> wrote:
| |正直、将来展望が一番納得いかない、というか、それならnil.to_s
| |もNoMethodErrorじゃないの? とかいう気がします。嫌ですけど。
| 
| to_iやto_fなどと違いto_sはObjectに定義されていますから、
| NoMethodErrorは絶対におかしいでしょう。また、to_sは「そのオ
| ブジェクトの文字列表現」です。現在、nil.to_sで""を返していて
| 困ってないのは、いくつかの局面(putsとかprintfとか)でnilを特
| 別扱いしているからです。それは美しくないんでないかと。
| 
| その他の点でどう納得行かないのか聞かせてくださいませ。
| 
| |というわけで、
| |  String(nil)  #=> TypeError
| 
| Objectにto_sがあるのにString(nil)が失敗するとなると、
| String()が失敗する基準というのが(うささんの頭の中に)なにかあ
| るんですかね。to_strがあるものだけ変換可能とか?

いずれも、見た感じ(それはつまり書いた感じでもあるわけですが)
での一貫性を求めているわけですが、「感じ」じゃ説明にも説得に
もならないでしょうねえ。
# 実際、ああいう形でリストを書くと、それなりに賛同する人も多
# いようなので、同じような「感じ」を共有する人も多いようでは
# ありますが。


さて、to_sが「そのオブジェクトの文字列表現」であるのはそうで
すが、前田さんも書かれたように、nilオブジェクトの文字列表現が
空文字列であることは自然であると思います。

また、putsやprintfでの特別扱い(後者は実はよくわかんないんです
が)ですが、nil.to_sを変えずにその特別扱いの方をやめる、という
選択肢はないのでしょうか?
nil.to_sを変えても、putsなどでの特別扱いをやめても、いずれに
せよ非互換が発生するわけですが、私としては特定のメソッドに非
互換部分が閉じ込められる方がよさそうに感じます。

あと、String()が失敗する基準ですが、実はぜんぜん基準はありま
せんでした。弱い。
String()とInteger()・Float()とは比較できるほど同じ思想にはな
い、ということになるのですかね。


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



In This Thread