Hi Jon,
> I want to send arbitrary messages to an object MyObj. If I have a word
> "msg", then I want to send the message 'msg> to MyObj. I do it like
> this:
>
> (setq Word "msg")
> (setq MsgSym (car (str (pack Word ">"))))
> (try MsgSym MyObj)
Yes, you must make an internal symbol, as the message lookup uses
pointer-equality during lookup. But 'str' is a bit too heavy ;)
This should work:
(dm msg ()
... )
(try (intern Word) MyObj)
The ">" is just a naming convention and not absolutely needed here, but
of course you can do (with a little overhead)
(dm msg> ()
... )
(try (intern (pack Word ">")) MyObj)
> If MsgSym is not a message that can be located in MyObj, then the
> “try” function will return NIL. However, depending on the message, the
> “try” function may also return NIL for valid messages. What’s the best
> way to find out if MsgSym is/was a valid message symbol for MyObj?
You can test the lookup with
(method 'msg 'obj)
♪♫ Alex
--
UNSUBSCRIBE: mailto:[email protected]?subject=Unsubscribe