ごとけんです
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