8.4. Argument Types
If you've programmed before, you may have noticed that when you define your handler in AppleScript, you don't declare the types of the arguments it takes. Nor does AppleScript do any checking on the types of arguments you supply when you call the handler. AppleScript just makes sure that you supply the correct number of arguments to the handler. That means if you write this call
sum(100)
AppleScript comes back with the following error message when you compile the script:
{100} doesn't match the parameters {x, y} for sum.
This is an indication that you have not supplied the correct number of arguments. (It actually means that you haven't matched the pattern of the arguments. I explain this later in this chapter).
If you try to call the sum handler with an argument that can't be coerced into a number, like this
sum("abc", 10)
you get an AppleScript error when you run the program because AppleScript can't add the string "abc" with the number 10. However, the following works
sum ("5", "10")
because both strings can be coerced into numbers when the addition is performed.
You can check the type of your arguments inside your handler and take appropriate action if they aren't the types you expect. For example, you can rewrite your sum handler to make sure both arguments are numbers. If either is not a number, you can return some arbitrary value as the result (for example, zero or missing value). Alternatively, you could generate an error; but you don't know how to ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access