The ':answer' message selector adds or changes a method in the specified class. This method consists of the 'message' selector symbol, the 'arg' formal argument list and the executable 'code' associated with the message.
(setq myclass (send class :new '(var))) ; create MYCLASS with VAR (send myclass :answer :isnew '() ; set up initialization '((setq var nil) self)) (send myclass :answer :set-it '(value) ; create :SET-IT message '((setq var value))) (send myclass :answer :mine '() ; create :MINE message '((print "hi there"))) (setq my-obj (send myclass :new)) ; create MY-OBJ of MYCLASS (send my-obj :set-it 5) ; VAR is set to 5 (send my-obj :mine) ; prints "hi there"
Note: When you define a message in a
Message structure: The normal XLISP convention for a message is to have a valid symbol preceeded by a colon like :isnew or ':my-message'. However, it is possible to define a message that is a symbol without a colon, but this makes the code less readable.
See the