[#23332] to_str再考 — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

15 messages 2004/04/05

[#23380] [SEGV] make test-all (bccwin32 ruby1.9.0) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>

山本です。

17 messages 2004/04/15
[#23400] Re: [SEGV] make test-all (bccwin32 ruby1.9.0) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/04/16

山本です。落ちる場所がわかりました。

[#23402] Re: [SEGV] make test-all (bccwin32 ruby1.9.0) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/04/16

山本です。

[#23403] Re: [SEGV] make test-all (bccwin32 ruby1.9.0) — nobu.nakada@... 2004/04/16

なかだです。

[#23405] Re: [SEGV] make test-all (bccwin32 ruby1.9.0) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/04/16

山本です。

[#23407] Re: [SEGV] make test-all (bccwin32 ruby1.9.0) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/04/16

山本です。

[ruby-dev:23334] Re: to_str再考

From: "NAKAMURA, Hiroshi" <nakahiro@...>
Date: 2004-04-06 01:26:10 UTC
List: ruby-dev #23334
なひです。

> From: "Yukihiro Matsumoto" <matz@ruby-lang.org>
> Sent: Tuesday, April 06, 2004 12:46 AM

> to_strについて改めて考えています。to_strはStringのduck type
> を実現するためのhackだと考えるようになりましたので、Stringと
> 類似のメソッド集合を持たないオブジェクトはto_strを定義するべ
> きではないように思います(実害がない限り)。
> 
> そこで標準添付ライブラリを探してみたところ、to_strを定義して
> いるのは3クラスありました。

> csv.rb: CSV::Cell#to_str
> 
>   これなんで定義されているんでしょう。不要ではないでしょうか。
>   いや、きっと使うから定義したんだと思いますが。できれば削り
>   たいです。

追加したのは去年の12/12と比較的最近です。なのにあまりはっきり
理由を覚えていないということは、あまり考えてないということだと
思います。^^;

Cellの位置付けとしては、「Null値を格納したCell同士が==でtrueに
ならないString」ということで、基本的にはStringとして使えて欲し
い、と思っています。従来は解析結果をいちいちaCell.dataとして
文字列を取り出していたんですが、めんどくさいのでもうちょっと
スマートにしたかった、ような気がします。

改めて上記定義を元に考え直してみると、今は、

* CellをStringのsubclassにする。to_strは消す。
* CellにStringのmethodを定義しまくる/Stringにdelegateする。

のいずれかかな、と思ってます。前者はちょっと実装が気色悪く
なりそうなんですが。。。

ご意見をいただいて、もう少し修正方法を考えようと思います。

In This Thread