Second-Level Evaluation
By “second-level
evaluation” I mean constructing and executing code
at runtime. AppleScript has no built-in way of performing
second-level evaluation. However, you can achieve much the same
effect through the use of the run script
scripting addition command, which allows
you to compile and run a string. (See Section 9.6.)
The use of run script
is rather
resource-expensive, because it requires that a completely new
instance of the AppleScript scripting component be generated and torn
down. It’s also rather slow, because it takes time
to compile the string. Finally, it’s rather clunky,
because a string run in this way has no communication with its
surroundings; indeed, because a new instance of the AppleScript
scripting component is generated, it has no surroundings at all. In
other words, it isn’t like a script object that can
“see” globals at the point where it
is defined and run.
Nevertheless, there are things you can accomplish with run script
that can be accomplished in no other way. For
example, all terminology must be resolved at compile time, so the
only way to construct completely dynamically, at runtime, a command
involving terminology is by means of run script
.
In this example, we permit the user to enter part of an expression to be evaluated by saying it to the Finder:
set d to "window 1" set p to "What Finder object would you like the name of?" set r to display dialog p default answer d set s to text returned of r set s to "tell app \"Finder\" to ...
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.