使用前、後、またはスロットのput-方法についてのメッセージハンドラの周りに、あなたが値に基づいて、メッセージ・ハンドラから関数を呼び出すことができます。
CLIPS> (clear)
CLIPS>
(defclass ROOM (is-a USER)
(slot id
(type SYMBOL))
(slot windows-status
(allowed-strings "open" "close")))
CLIPS>
(defmessage-handler ROOM put-id before (?value)
(printout t "put-id event " ?self:id crlf))
CLIPS>
(defmessage-handler ROOM put-windows-status before (?value)
(printout t "put-window-status event " ?self:windows-status crlf))
CLIPS> (make-instance [r1] of ROOM (id room1) (windows-status "open"))
put-id event nil
put-window-status event nil
[r1]
CLIPS> (send [r1] put-id room2)
put-id event room1
room2
CLIPS> (send [r1] put-windows-status "close")
put-window-status event open
"close"
CLIPS>