Katsutoshi Itoh
cut-s****@maste*****
2006年 6月 21日 (水) 23:11:34 JST
Kahuaネタに特化してすみません。 とりあえず解決したので。 > ひとまず思っていた動作まではこぎつけたようです。 > 実際にはKahuaの永続クラスと混合して使っており、 > restartすると常に更新されてしまうという問題があるので > 引き続きいじらないといけませんが、それはまた別の問題 > ということで。。。 > だったんですが、 > (let1 auto? (slot-definition-option slot :auto-update #t) > ここをデフォルト#fにして各スロットには:auto-update #tを付けて、 全スロットに:auto-update #tを追加することで対応しました。 できればそれを無しにしたかったのですが、そうすると<kahua-persistent- base>側のスロットも :auto-update #t対応とみなすので(そうしたいと思ったのですが)、実際には <kahua-persistent-base>の initialize周りでset!系が使われてるとアウトってことで。(実際そうなってた) 基本的にはメタクラスを使って、メタオブジェクトプロトコルをオーバーライド する場合には やっぱり"目印を書かないでデフォルトで特殊処理を起動する"仕様ではなく、 "目印を書くことで特殊処理をする"ように作らないとダメってことですね。 他のメタクラスのクラスと多重継承した時に予想外の処理をしてるコトがあるし。 今回の例でいうと:auto-update #tを各スロットにイチイチ書きたくなかったん だけど、 書く仕様にしておけばハマることもなかったと。