Variable scope in Server mode
Alex Tweedly
alex at tweedly.net
Tue Aug 27 04:58:07 EDT 2013
I don't understand the scope rules for variables in LCServer (either
that or I've found a bug that is confusing me :-)
I expected that variables which were (implicitly) declared and set
within a script would be available within that script, and within
handlers of that script (i.e. like script locals in a normal stack script).
So in the normal case I have a file (mainfile1.lc) which has
<?livecode
put "123" into lang["a"]
put "456" into lang["b"]
put "main file direct" && the number of lines in the keys of lang &
"<br>" & CR
on plang pD
put "main file in handler" && the number of lines in the keys of
lang & "<br>" & CR
end plang
plang "a"
?>
and, as expected, that produces
main file direct 2
main file in handler 2
However, if I take the two 'put' statements, and place them in a file,
which I then include into my file, I get
within some file 2
main file direct 2
main file in handler 0
mainfile2.lc
<?livecode
include "somefile.lc"
put "main file direct" && the number of lines in the keys of lang &
"<br>" & CR
on plang pD
put "main file in handler" && the number of lines in the keys of
lang & "<br>" & CR
end plang
plang "a"
?>
somefile.lc
<?livecode
put "123" into lang["a"]
put "456" into lang["b"]
put "within some file" && the number of lines in the keys of lang
&"<br>" & cr
I have (repeatedly) read the dictionary entry for 'local', but can't
make enough sense of it to explain this behaviour - either why it should
happen, or to be sure that it shouldn't happen :-)
Any help much appreciated, thanks.
-- Alex.
More information about the use-livecode
mailing list