From: Yugui Date: 2007-12-29T00:14:05+09:00 Subject: [ruby-dev:32878] Re: class TimeSpan 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] はどうですかね。 -- Yugui yugui@yugui.sakura.ne.jp http://idm.s9.xrea.com