[ Team LiB ] |
11.3 Identifying ReferencesAppleScript 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.)
When I'm debugging or developing a script, I like the second method best; I look at a variable's value and I can see right away whether it's likely to be a reference. If I'm writing code where the code itself needs to test whether something is a reference, I like the first method best. Here's a general handler that returns a boolean value telling whether its parameter is a reference: on isRef(valueToTestAsRef) try valueToTestAsRef as reference return true on error return false end try end isRef -- and here's how to call it tell application "Finder" set x to folder 1 end tell isRef(x) -- true set x to "haha" isRef(x) -- false |
[ Team LiB ] |