Identifying References
AppleScript
goes to some lengths to hide the existence of references, making it
remarkably difficult to find out that a value is a reference.
Properly speaking, a reference is a class, a
datatype
like string
or integer
(Section 10.1 and Chapter 13). If you ask
a string about its class, it says string
. If you
ask an integer about its class, it says integer
.
But if you ask a reference about its class, it will never tell the
truth and say reference
.
set x to "hey" set y to 9 tell application "Finder" to set z to folder 1 class of x -- string class of y -- integer class of z -- folder
Here are some tricks you can use to learn that a value is a reference. (I don’t guarantee any of them, but they do seem mostly to work.)
- The reference coercion trick
The only thing that can be coerced to a reference is a reference. If you try to coerce anything else to a reference, you’ll get a runtime error. So try to coerce a value to a reference, and if there’s no error, it is a reference. For example:
tell application "Finder" to set x to folder 1 x as reference -- no error; it's a reference
- The editor result trick
If the script result, as shown in your script editor program, contains the word
of
, it is a reference. For example:tell application "Finder" to set x to folder 1 x -- folder "Mannie" of...; it's a reference
- The copy trick
A copy of a reference is the same reference. If you have two copies of something and they both provide access to the same thing (you may have to devise ...
Get AppleScript: The Definitive Guide now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.