ごとけんです

In message "[ruby-list:8419] Re: how to use delegate"
    on 98/06/19, Yukihiro Matsumoto <matz / netlab.co.jp> writes:

>まつもと ゆきひろです

>|まず delegate.rb はこういう利用を意図して作られてると
>|理解してよろしいのでしょうか? 
>
>そうです.

どうもありがとうございます。

>|ただこれだと、foo2.kind_of?(Array) => false です。
>|これはしかたないのですか? 
>
>そーですねえ.これは仕方がないと思います.どうしてもそうした
>い(だましたい)のでしたら,
>
>  def foo2.kind_of?(class)
>    return true if class == Array
>    super
>  end
>
>のようなのを追加するのがよろしいのではないでしょうか?

なるほど。つまり型を完全に偽ることはできないのですね。

>|さらにこれだと foo2 の特異メソッドとして定義されてる
>|わけですが、複数のインスタンスを作れるようなクラスを
>|定義する事はできますか? delegate でできなければ
>|どうするのがスマートでしょうか? 
>
>そういうことはdelegate.rbではできません.方法としては
>
>  (1) delegate.rbを参考にオブジェクトではなくクラスを定義す
>      るライブラリを作る
>
>  (2) 必要に応じてfoo2をcloneする(プロトタイプベースだ)
>
>ということが考えられます.

(1) を検討してみたいのですが、delegate.rb 中の
__send__ と言うのが分りません。
Object#send と同じモノでしょうか?
それと、確認したいのですがクラス版のdelegatorを作る
場合、適当な機能を持った Class のインスタンスを
返すモノを書くと理解して良いのでしょうか? 

-- gotoken