[ Team LiB ] |
Chapter 11. ReferencesThe notion of a reference has been informally used throughout the preceding chapters. In Chapter 3, an expression of this sort: anchored frame 1 of document "extra:applescriptBook:ch02places.fm" of application "FrameMaker 7.0" was described as a reference; building such an expression was called "constructing a reference," a command whose result was an expression of that sort was said to "return a reference," and a list of such expressions was called "a list of references." Much talk of the same sort appears in Chapter 10. On the other hand, the word "reference" has also been used in another way. In various places we have referred to the setting and passing of values " by reference." That is not what this chapter is about. When you pass a list "by reference" as a parameter to a handler, you do not pass a reference; you pass a list (in a certain way). The identity of the terminology is unfortunate but unavoidable. This chapter is about references in the first sense. As you might suspect from this, a reference is a complete chain of ofs, such as to specify a target. But this way of putting the matter makes it sound as if a reference is merely an expression, a stretch of words in your code. In AppleScript, a reference is more than that: it's a value embodying such an expression. To see what I mean, let's imagine obtaining such a value in a way that's very common—as a result returned by a scriptable application. For example, suppose you say this: tell application "Finder" set x to (get folder 1) end tell Now, what's x? On my machine, it's the following: folder "Mannie" of desktop of application "Finder" What can this mean? A folder is a thing in the Finder's world. Surely the Finder cannot have literally handed this folder to our script. Rather, the Finder has handed us some sort of means of access to this folder. That's a reference; x is a reference to a certain folder in the Finder. References are an important feature of AppleScript, and many values you'll encounter using AppleScript will be references. |
[ Team LiB ] |