小松です.

At Sun, 13 Jan 2002 12:51:32 +0900,
TAKAHASHI Masayoshi wrote:
> このコードだと、たとえば、
> 
> b1 = ClassB.new
> p b1.actives    #=> nil
> b1.activate
> p b1.actives    #=> [#<ClassB:0x80fd8d0>]
> b1.deactivate
> p b1.actives    #=> []  ## nilではない?
> 
> 
> ……というような形になってしまいますけど、いいんでしょうか。

たしかにそうですね. 見落としていました.
ありがとうございます. nil の場合は [] を返すようにする
ようしました.


> なお、別解としては、共通のクラスを作って、ClassAとClassBをその
> サブクラスにする、という方法もあります。

この方法が非常に正解だと思うのですが, 「既存のクラスに追加したい」と
いう要求と「親クラスというよりも Mix-in 的なものは Mix-in でやりたい」
という要求が僕の中であったので, ちょっと悩んでいました.

# 設計を見直す. というのが一番の解かもしれません...


> この場合、ClassAとClassB
> のactivatesの情報は、クラス変数ではなく、クラスオブジェクトの
> インスタンス変数に持たせることができます。

なるほど. こういう風にできないだろうかと考えていたのですが
僕には分かりませんでした. ありがとうございます.
ただ, 非常に複雑に感じてしまったのは, まだ Ruby 道白帯だから
なんでしょうかね. (^^;

-- 
                                                            小松弘幸
                                                -----------------------
                                                   http://taiyaki.org/