まつもと ゆきひろです
In message "[ruby-list:8418] how to use delegate"
on 98/06/19, GOTO Kentaro <gotoken / math.sci.hokudai.ac.jp> writes:
|ごとけんです
|
|教えて下さい。
|インスタンス変数を持てない組み込みクラスに
|数個だけインスタンス変数を持たせたいときは、
|delegate を使うと良いのでしょうか?
そうです.
|まず 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する(プロトタイプベースだ)
ということが考えられます.
まつもと ゆきひろ /:|)