Mailing Lists: Apple Mailing Lists

Image of Mac OS face in stamp
 
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Global variables




On Mar 8, 2007, at 16:13, Stockly, Ed wrote:


deivy >>> First, to make the variable global declare it in the script main body. No need to declare it as global, it is global by default.

That's not exactly correct. The script's main body is not executed if the script is used as a droplet, so undeclared globals are not globals when run as a droplet. But globals declared in the top level are indeed globals, so you must declare globals in the top level of your script if you're going to use it as a droplet.


That's one reason why I think properties are easier to use than globals. They work one way no matter the context.

HTH,


ES

Ed,
what I wrote is correct.
A variable declared at the top level is global and has its value retained across runs.
As I pointed out, if the declaration comes after the call, one gets an error. This is what happens in a droplet.
I run some tests with droplets here and declaring global or not, makes no difference, the variable will not be defined if it is set in the top level script.
Property, however, is set at compilation time and will pass the value to the handler wether or not the top level script is run.
I agree with you that it is better to declare a property than a global variable, if I am to declare it at the top level. However, the fact that a declared variable is global, has some utility. If you need it in only one handler, declaring it a global in that handler allows it to be used without being passed.
Interestingly enough, this might also cause some problems. As pointed out below:


<script>
set j to 1

repeat with j from 1 to 10
	set soma to j
end repeat

log j -->j=10
if soma < 11 then get NeedMoreLoops(soma)


on NeedMoreLoops(soma) global j log j -->j=1 repeat with j from j to j+1 set soma to soma + j end repeat end NeedMoreLoops

--> 13 (not 31)
</script>

Deivy


_______________________________________________ Do not post admin requests to the list. They will be ignored. AppleScript-Users mailing list (email@hidden) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/applescript-users/email@hidden Archives: http://lists.apple.com/archives/applescript-users

This email sent to email@hidden
References: 
 >RE: Global variables (From: "Stockly, Ed" <email@hidden>)



Visit the Apple Store online or at retail locations.
1-800-MY-APPLE

Contact Apple | Terms of Use | Privacy Policy

Copyright © 2007 Apple Inc. All rights reserved.