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

Reply via email to