Show globals
Rob Cozens
rcozens at pon.net
Fri Dec 12 12:02:15 EST 2008
Bob, et al:
A couple of follow up thoughts:
>And script local variables cannot be accidentally or purposely read
>or changed by scripts in other stacks or other objects.
This may not mean much if you are developing end user applications;
however if you are building libraries that may be used by other Rev
developers, it is a significant plus.
>any script local variable can be accessed by handlers in other
>scripts or stacks, if the script declaring the local variable
>includes a getValue function and a setValue command for that variable. Eg:
>
>local mySharedVariable
>
>function getValue
> return mySharedVariable
>end getValue
>
>on setValue newValue
> put newValue into mySharedVariable
>end setValue
The examples I gave are very generic. In the real world one might
script specific get and set handlers:
local mySharedVariable
local anotherSharedValue
function getMySharedVariable
return mySharedVariable
end getMySharedVariable
on setAnotherSharedValue newValue
put newValue into anotherSharedValue
end
or something a little more generic like:
function getValue variableName
switch variableName
case "mySharedVariable"
return mySharedVariable
case "anotherSharedValue"
return anotherSharedValue
end switch
return empty --or an error
end getVal;ue
on setValue variableName, newValue
switch variableName
case "mySharedVariable"
put newValue into mySharedVariable
break
case "anotherSharedValue"
put newValue into anotherSharedValue
break
end switch
end getVal;ue
I don't know if "do" will do the job:
function getValue variableName
do "put"&&variableName&&"into theValue"
return theValue
end getValue
because I don't do "do"s and wonder if code compiled a runtime can
access script local variables.
If shared script local variables reside in the stack script, then
handlers such as those above allow access to the variables from every
other handler in the stack. If the script locals reside on an
interior control, one might want to script getValue as a command
which can be sent by other handlers elsewhere in the stack:
on getMySharedVariable
return mySharedVariable
end getMySharedVariable
Where the calling handler could...
send "getMySharedVariable" to <reference to control whose script
contains\ the variable>
put the result into mySharedVariableCopy
Rob Cozens CCW
Serendipity Software Company
"And I, which was two fooles, do so grow three;
Who are a little wise, the best fooles bee."
from "The Triple Foole" by John Donne (1572-1631)
More information about the use-livecode
mailing list