From: Yukihiro Matsumoto Date: 2008-11-11T00:56:59+09:00 Subject: [ruby-dev:37057] Re: [Feature #735] Date#inspect まつもと ゆきひろです In message "Re: [ruby-dev:37056] Re: [Feature #735] Date#inspect" on Mon, 10 Nov 2008 21:33:56 +0900, Tadayoshi Funaba writes: |> 「inspectは人間に優しい文字列化」という観点から、Date#inspectの出力はふさわしくないと思います。 |> # やら # のほうがわかりやすいです。 | |「inspectは人間に優しい文字列化」というのは初めて聞きました。現状では本 |質部分がすべて見えているので、それなりに気に入っていますが、現状のよう |な情報が大部分の人間に無用である、ということなら、inspect も to_s と同 |じようにしてもいいかもしれません。 | |ただ、inspect というのは、smalltalk 由来じゃないかと思うのですが、その |考えかたからすれば、現状の inspect は外れてはいないように思います。デフォ |ルトの inspect の振舞いからもそう感じます。to_s と殆ど変らない情報を提 |供することには疑問を感じます。 私はSmalltalkerではないので、いただいて来たのはinspectという 名前だけです。で、inspectの目的は何かと言うと、pが表示に用い ることから考えても、なんらかの理由でto_sの情報だけからオブジェ クトの情報を読み取ることが難しい時に、より多くの(人間にとって 読みやすい/わかりやすい)情報をデバッグ向けに提供するというこ とでしょう。ここにおいては誰もそれほどは相違していないと思い ます。 |たとえば以下の、a と b は違うのですが、いくらか秒以下の桁を表示すること |にしてもその違いは判らないかもしれません。 | | a = DateTime.parse('2008-11-10T01:02:03.123456789') | b = DateTime.parse('2008-11-10T01:02:03.1234567891') | |また、同じ日付のように見えても、グレゴリオ暦とユリウス暦では違うわけで |すが、そういうことも判りません。現状では、違いははっきりします。 |inspect とはそういうものじゃないかという気がします。to_s したら同じよう |に見えた日付も違うものだった、という事が判ればデバッグに役立つと思いま |す。 ここで、ふなばさんのおっしゃることもよくわかるのですが、個人 的にはDate#inspectがto_sに近い書式であったらなあ、と思ったこ とが一度ならずあります。確かにDate#inspectではすべての情報を 提供しているのですが、それが人間世界(?)でどのような意味を持 つかということが読み取りにくいからです。 私のように単に「ある日」を指すオブジェクトとして使うことの方 が圧倒的に多い人には現在のinspectの情報は「やさしい」とは言え ませんね。pで出力させても何日なのかわからないからです。結局 to_sで表示し直すことになるという。でも、Dateそのもののデバッ グには現在の方がうれしいでしょうね。 |ここで「俺の考える inspect」を述べ合ってもしょうがないので、そもそも |ruby の inspect はどうあるべきだったのか、まつもとさんに訊いてからどう |したらいいか考えたほうがいいでしょうか。 どこかに妥協点があるとよいのですが。ただ、私はinspectがto_s と同様の「人間にわかりやすい日付(DateTimeの場合は時間も)」の 表現 も 含むことを期待します。 まつもと ゆきひろ /:|)