Generic Invisibility Handler

Bob Sneidar bobs at
Mon Feb 8 11:56:54 CST 2010

There are two ways to make a variable visible to a command or function. First, you can declare the variable as a global or script local. A global variable is one that is available to any handler that declares it, or optionally, to any script that declares it outside any handlers:

on doSomething
   global myValue
end doSomething

on doSomethingElse
   global myValue
end doSomethingElse

The second way is to pass the value to the command or function:

on doAnotherthing myValue
   -- some commands
end doAnotherthing

The globals or script locals are persistent while Revolution is running. The parameter is NOT persistent, in that as soon as doAnotherThing terminates, myValue is destroyed. 

You could make it a function:

function doYetAnotherThing myValue
   -- do things that change myValue
   return myValue
end doYetAnotherThing

and then preserve myValue by putting the result of the function back into myValue:

put doYetAnotherThing(myValue) into myValue

Seems silly, but there you have it. The better way to do this without using a function is by declaring the parameter using the @ keyword (keychar??): 

on doOneLastThing @myValue
   -- some commands that change myValue
end doOneLastThing

in which case myValue will not be destroyed when doOneLastThing terminates, because the command was passed to the function as a variable and not the value. The calling program will see the change in myValue. 

That about sums it up. Globals and Script Locals are for persistence while Revolution is running. They are visible to whatever declares then, including ALL handlers in a script that declares it outside of any handler like so:

local myValue -- or global if you want it to be visible by ALL handlers
              -- in ALL scripts in your stack or application

on okayThisLastThing
   -- do something to the most used variable ever
end okayThisLastThing

Parameters are for passing values that get destroyed when the command or function terminates. 


On Feb 8, 2010, at 9:14 AM, Andrew Kluthe wrote:

> Any suggestions on helping this RevNub get this sorted out? In your
> response, try to include how the params are used in handlers. Thank you so
> much in advance for your replies!

More information about the use-livecode mailing list