From: gotoken@... (GOTO Kentaro) Date: 1998-06-19T12:51:15+09:00 Subject: [ruby-list:8420] Re: how to use delegate ごとけんです In message "[ruby-list:8419] Re: how to use delegate" on 98/06/19, Yukihiro Matsumoto 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