[#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:29409] Re: nil.to_s

From: Yukihiro Matsumoto <matz@...>
Date: 2006-09-02 11:32:46 UTC
List: ruby-dev #29409
まつもと ゆきひろです

In message "Re: [ruby-dev:29396] Re: nil.to_s"
    on Sat, 2 Sep 2006 01:14:46 +0900, "U.Nakamura" <usa@garbagecollect.jp> writes:

|前田さんが私と同じ意見だとして、[ruby-dev:29384]にも書いたよ
|うに、putsにおけるnilの特別扱いをやめる、ということです。
|おそらくそれは、nilの場合だけ"nil"という文字列を出力させてい
|たことを指すのだと思いますが、それをせずに他のオブジェクトと
|同じくrb_obj_as_string()に渡す、つまりto_sの結果である""が出
|力される、ということです。
|
|ですが、これは、nil.to_sを"nil"に変える理由のひとつがその特別
|扱いにあるということだから、であって、本当のところを言えば、
|これもやはり変えないままでよければそれが無難でしょう。
|# そりゃ、何も変えないのが無難には決まってますが...

putsがnilを出力しないのは、あきらかに不便だと思います。私に
とっては天秤にかける内容ではないのですが。実際のところはそう
でもないのかな。

|to_sの結果が「『そのオブジェクトがどんなものであるか』がはっ
|きり分かる文字列であるべき」とすると、inspectとの住み分けはど
|うなるのでしょうか?
|リファレンスによれば、to_sが「オブジェクトの文字列表現」であ
|り、inspectが「オブジェクトを人間が読める形式に変換した文字列」
|だとありますが、to_sが今回まつもとさんが説明されたような目的
|のものであるとすると、この二つのメソッドの違いがよくわからな
|くなってしまいます。

to_sはprintで、inspectはpで使われる、というのがこれら二つの
メソッドの違いです。逆に言えばそれ以上の明確な違いは定義され
ていないわけですね。ですから「『そのオブジェクトがどんなもの
であるか』がはっきり分かる文字列であるべき」というのは絶対条
件ではありません。ただ、一般論として他の区別できない文字列表
現は良くない(ので、従来のto_sのうちあまり望ましくないものが
あった(arrayとかhashとか))とは思っています。

これらの違いをどう明確化するかですが、inspectはtruncateする
ことがあるが、to_sはしない、とかかなあ。

逆に、区別することを重要視せず、従来のままnil.to_sは空文字列
としても構わないって言えば構わないんですが、その場合には今度
は「nilの意味」に踏み込むことになりますね。将来定義されうる
あらゆるto_xxxはnilから零元に変換されるべきだ、とか? 直近だ
とcomplexやrationalの組み込みが予定されてますよね。

                                まつもと ゆきひろ /:|)

In This Thread