Call and Send?

J. Landman Gay jacque at hyperactivesw.com
Thu Dec 8 20:18:13 CST 2005


Steven Fernandez wrote:
> Thanks for the pointer. What I found in that article is:
> 
> "The difference between the send and call commands is that the send
> command changes the context so that object references are treated as
> relative to the object you send the message to, while the call command
> does not change the context and continues to treat object references
> relative to the original object."
> 
> Looking back at the docs I now see this mentioned with an example on
> the send help help page.

Maybe you already know this, but just in case: note that you don't need 
either of these commands except in unusual circumstances. If you only 
want your messages to get "caught" you don't need to either send or call 
them. Just issue them and they will be passed through the message path 
normally. For example:

on myTest
  doIt
end myTest

on doIt
  answer "I did it."
end doIt

That's all there is to it; issuing "doIt" automatically pushes it 
through the message path. Because the "doIt" handler is in the same 
object script, it gets caught. It could also be in any other script 
"downstream" in the hierarchy and it would get caught just as well.

You only need to "send" a message if the handler you're sending is 
located somewhere else in the path where it won't normally be seen. For 
example, if "myTest" is in the stack script and "doIt" is in the card 
script, you'd need to "send 'doIt' to this card" because the card script 
is "upstream" from the stack script, opposite the normal message flow.

One other reason to use "send" is to create timers, but it doesn't sound 
like you're doing that.

I've been using xtalk for 20 years and I've not needed "call" yet. Maybe 
I'm missing something.

-- 
Jacqueline Landman Gay         |     jacque at hyperactivesw.com
HyperActive Software           |     http://www.hyperactivesw.com



More information about the use-livecode mailing list