まつもと ゆきひろです

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する(プロトタイプベースだ)

ということが考えられます.

                                まつもと ゆきひろ /:|)