From: Kenta Murata Date: 2009-12-24T20:26:49+09:00 Subject: [ruby-dev:39925] Re: Time.now + str と #to_r むらたです。 On 2009/12/24, at 9:28, Yukihiro Matsumoto wrote: > In message "Re: [ruby-dev:39915] Re: Time.now + str と #to_r" > on Thu, 24 Dec 2009 09:06:06 +0900, Kenta Murata writes: > > |> その場合、convert_toとかcast_toとかのメソッドの実装の中で、ク > |> ラスごとに条件分岐するのであれば、新たに数クラスが増えた場合 > |> に対応するのが難しくなるのではないでしょうか。実装としてダブ > |> ルディスパッチを使えば、結局はなんらかのメソッド名を考える必 > |> 要があるのではないかと。 > | > |自分が知らないクラスへの変換時にダブルディスパッチで呼び出すクラスメソッドを > |convert_from という名前に決めれば、この場合については対称的になって美しいと思います。 > > なんとなく理解できた気がしないので、もうちょっと説明してもら > えませんか。 > > 仮にRationalという組み込みでないクラスがあったとして、 > > r = 2.convert_to(Rational) > > は具体的にはどんな処理をするのでしょう? ただし、Rationalは組 > み込みではないので、2はRationalというクラスについて知らないこ > ととします。 > def convert_to(target_klass) case target_klass when 知ってるクラス1 変換処理1 when 知ってるクラス2 変換処理2 when ... ... else target_klass.convert_from(self) end end こんなメソッドを想定していました。 -- Kenta Murata OpenPGP FP = FA26 35D7 4F98 3498 0810 E0D5 F213 966F E9EB 0BCC 本を書きました!! 『Ruby 逆引きレシピ』 http://www.amazon.co.jp/dp/4798119881/mrkn-22 E-mail: mrkn@mrkn.jp twitter: http://twitter.com/mrkn/ blog: http://d.hatena.ne.jp/mrkn/