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

From: Shugo Maeda <shugo@...>
Date: 2006-09-02 01:13:19 UTC
List: ruby-dev #29402
前田です。

Yukihiro Matsumoto wrote:
> |Ruby でのルーズな tips として、
> |その値が文字列か nil かわからないときに nil.to_s を使う、
> |というのがあるかと思います。
>
> そうなんですか。

残念ながら使っている人は多いです。
私も使っていると思います。

> この人工的な例からnil.to_sが""であるべき理由を読み取ることは
> できませんでした。この例は「存在しないキーに対して空文字列が
> ほしい」ということなんだと思うんですが、そういう目的のために
> Hashにはデフォルト値が用意されてますよね。

Hash以外にも引数などがnilかもしれない時に

def foo(x)
  ... x.to_s ...
end

とするようなケースがありますよね。

x || ""の方が好ましいと思いますが、上記のようなコードも多い
と思います。

> |to_s の場合は前田さんの [ruby-dev:29393] に同旨ですが、
> |なにかに nil の変換結果を加えても「なんでもない」のだから、
>
> 「なにかに nil の変換結果を加えても「なんでもない」」かどう
> かは自明ではないと思います。つまり、「なぜそうあるべきか」と
> いうことが示せれば、nil.to_sが""であり、to_i, to_fなども残す
> という結論を導けるのでは。

やはり、実際的には互換性の問題が大きいと思います。
なひさんが書かれているようなメリットは認めますが、例外になる
わけではないのでエラーの検出はそんなに楽にはならない(上記の
ようなルーズなコードを書く人はたぶんテストもあまり書かない)
と思いますし、それならば互換性を捨ててまで変えなくてもよい
のではないかと。

-- 
前田 修吾

In This Thread