use of qualifiers of a luna method
NAKAJIMA Mikio
minakaji @ osaka.email.ne.jp
2002年 1月 19日 (土) 11:42:31 JST
luna.el で、同名の method につき、異なる qualifier を指定して
複数回 luna-define-method すると、最後に define した method だけが有効
になって他が無効になってしまいます。
[検証]
(luna-define-class test () ())
[class [0 0 0 0 0 0 0 0 0 0 0 0 ...] (standard-object) 2]
(luna-define-method initialize-instance :before
((test test) &rest init-args)
(setq x (1+ x))
test)
(luna-define-method initialize-instance :after
((test test) &rest init-args)
(setq y (1+ y))
test)
(setq x 0 y 0)
(luna-make-entity 'test)
[test [0 0 0 0 0 0 0]]
; before の方は実行されない。
x
-> 0
; after の方は有効。
y
-> 1
簡単に直せそうだったらやろうかと思ったのですが、luna-define-method が
そもそも 1 つの qualifier にしか対応していないので挫折しました。
luna.el を使い込むにつれ、どうも advice.el の姿と重なって見えて仕方な
いのですが、advice.el が :before, :around, :after の各 qualifier
(advice.el では class と呼ばれている) を併用可能なのに対して、luna.el
が上記のように 1 つだけの qualifier が有効でしかも、評価の順が有効な
qualifier を決めるのは様なのは少し見劣りがするような気がします。
これについて、改善の予定はあるでしょうか?
--
中島幹夫 <minakaji @ osaka.email.ne.jp>
<m-nakajima @ descente.co.jp>
http://www.asahi-net.or.jp/~gy2m-nkjm/
More information about the Emacs-mime-ja
mailing list