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