Also, one important thing to notice is that commands (I am the only
one that call them handlers?) do travel the message path so you can
use all the message path 'manipulators' to work on them. For example
for a simple timeout routine:
on timeout
answer "Timeout!!!!"
end timeout
on doSomething
local tTimeoutMsgID
send timeout to me in 15 seconds
put the result into tTimeoutMsgID -- Stores the message ID for the
send in time operation
doSomethingThatWillTakeTime
cancel tTimeoutMsgID
end doSomething
So if the doSomethingThatWillTakeTime takes more than 15 seconds the
timeout message will trigger, if not, the cancel operation will
cancel the pendingMessage. This behaviour is much more complicate to
achieve using functions for you can't send a function in time. My
*style* is
Cases when I use Commands/Handlers: When the code should be used
with a 'send in time' opetation. When the command should be
considered an Event, as in UI Events, Server transaction events, game
workflow events. When I want OOP-style inheritance, like messages
travelling up the message path from object->card->stack.
Cases when I use functions: all the quick routines that simply are
supposed to receive arguments and output results. All the repetitive
tasks, if I identiy a piece of code that is used in two or more
handlers, I make that piece a function and remove it from the handler.
I tend to think like Commands own the code and functions are handy
things that Commands use. When I think a program, I think which
events will happen, I then code them as Commands/Messages/Handlers
then I make all the functions needed by those handlers. Thats how I
think, which, I think is not how everyone thinks...
Cheers
andre
On Mar 15, 2006, at 1:46 AM, Ken Ray wrote:
On 3/14/06 10:31 PM, "Thomas McGrath III" <[EMAIL PROTECTED]>
wrote:
Hello listeroos,
Can someone give the long answer on when is it best to use a function
versus a command? I have a lot to write of both commands and
functions and have been overly confusing myself. Please give at least
two examples each with parameters and how to call/use them.
In general, you use functions when you want to return some value,
and you
use commands to "execute" things. However, both constructs allow
you to do
both, so it's really a matter of preference.
An example of a typical function:
on mouseUp
put addEmUp(5,10,20) into field 1
end mouseUp
function addEmUp pNum1,pNum2,pNum3
put pNum1+pNum2+pNum3 into tTotal
return tTotal
end addEmUp
and a typical command:
on mouseUp
NotifyUser "We're done!"
end mouseUp
on NotifyUser pMsg
put "Just wanted to tell you:" && pMsg into tText
answer tText
end NotifyUser
However you could (if you wanted to), reverse them:
A function as a command:
on mouseUp
addEmUp 5,10,20
put the result into field 1
end mouseUp
on addEmUp pNum1,pNum2,pNum3
put pNum1+pNum2+pNum3 into tTotal
return tTotal
end addEmUp
A command as a function:
on mouseUp
get NotifyUser("We're done!")
end mouseUp
function NotifyUser pMsg
put "Just wanted to tell you:" && pMsg into tText
answer tText
end NotifyUser
Your call as to how to use them... but in general, a function
returns a
value and a command doesn't.
HTH,
Ken Ray
Sons of Thunder Software
Web site: http://www.sonsothunder.com/
Email: [EMAIL PROTECTED]
_______________________________________________
use-revolution mailing list
[email protected]
Please visit this url to subscribe, unsubscribe and manage your
subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution
_______________________________________________
use-revolution mailing list
[email protected]
Please visit this url to subscribe, unsubscribe and manage your subscription
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution