[ruby-dev:39925] Re: Time.now + str と #to_r

From: Kenta Murata <muraken@...>
Date: 2009-12-24 11:26:49 UTC
List: ruby-dev #39925
むらたです。

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 <muraken@gmail.com> 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/


In This Thread