From: "遊楽庵" Date: 2007-12-29T01:08:56+09:00 Subject: [ruby-dev:32879] Re: class TimeSpan 遊楽庵です。 > 2[Year] > はどうですかね。 # 2[Year]だと「Year」をどこかに定数定義しなければいけなくなるので ならばシンボルで「2[:year]」というのはどうでしょう。 …とか書いてて、そこまで細かいことはどうでもええ気がしてきました。 2.yearも2[:year]や2[Year]も見てくれ似てますしね。 言いだしっぺなのにすみません。 それより問題はこっちだと思います。 > まず、時間間隔を数値で表している現状はやはり直感的でなく、Timeは秒で > DateTime > は日で、と覚えなくてはならないのは何かが間違ってる証拠だとは思うんです。 # Ruby始めた頃から思ってたんですが、そもそもなんで日付・時間を表すクラスが 「Date」「Time」「DateTime」と3つもあるのでしょうか。 「Date」や「DateTime」にできて「Time」にできないことはないと思うんですよ ね。もちろん時間単位は別ですが。 時間単位だけの問題ならば、それこそ「1.day」なり「1[:day]」や「1[Day]」で もなんでもNumericの方で調整して「Time」に放り込むようにすれば 覚えることが減って、私のように「1.week.since()」にDateTimeオブジェクトを 渡して1000年後の日付を出してしまうようなドジは減るように思うのですが。 Yugui さんは書きました: > Yuguiです。 > > On 2007/12/28, at 22:50, NARUSE, Yui wrote: >> 2.years #=> TimeSpan >> Time.now + 2.years >> >> の方がわかりやすいきもしますが、さておき 2.years って表記がそもそも Ruby >> 的ではない気はします。 >> > > 私もActiveSupport風表記の導入には違和感を感じます。ただ、Ruby的でないかと > いうとそうも思わないです。2.timesもあるし、2.chrもありますからね。 > > > まず、時間間隔を数値で表している現状はやはり直感的でなく、Timeは秒で > DateTime > は日で、と覚えなくてはならないのは何かが間違ってる証拠だとは思うんです。 > ですから、自然なAPIがあればTimeSpanなりDeltaなりがあるのは素晴らしいと思 > いま > す。 特に、「1年」のような曖昧な概念を表現するにはそれが望ましいですよね。 > > > けれども、そのためにNumericを拡張するのは違って、それは時間を他の次元に > 対して > 特権的に扱うことなんですよね。 > 利用頻度から言っても、時間間隔が通貨単位よりも格別によく使われるものとは > 思えず。 > > プリミティブな数量概念(Numeric)をコアにしながらも、そこから次元・単位付 > きの量 > を導出する一般的なメソッドと、そのメソッドに次元や単位を適用するための規 > 約、 > があればいいと思います。あんまり具体的な案が出てこなくて恐縮ですが。 > 2._(Year) > 2._(Kiro * Meter) > これではまだ、なんかちょっと不自然ですよね。 > 2[Year] > 2[Kilo * Meter] > 2[Yen] > こっちのほうが少しましでしょうか。kind_of?でビットアクセスと判別は可能で > すよね。 > > > さしあたっては、ActiveSupportのようなad-hocな解決をライブラリで実現でき > るのは > Rubyの素晴らしい点で、ActiveSupport形式を時間に対してのみRuby自体に実装する > 必然性は感じません。 > 次元に対して中立な綺麗なAPIが思い浮かべば素敵だと思うんですが。うーん。 > 2[Year] > はどうですかね。 > -------------------------------------- Easy + Joy + Powerful = Yahoo! Bookmarks x Toolbar http://pr.mail.yahoo.co.jp/toolbar/