Библиотеки с помощью Сценария Загрузки
Индивидуалисты OS X v10.9 (AppleScript 2.3) представляют встроенную поддержку библиотек сценария, которые являются сценариями, содержащими обработчики, которые могут быть совместно использованы среди многих сценариев. Сценарии, которые должны работать на более старых версиях OS, могут совместно использовать обработчики между использованием сценариев load script
, как описано здесь.
Сохранение и загрузка библиотек обработчиков
В дополнение к определению и вызову обработчиков в сценарии, можно получить доступ к обработчикам из других сценариев. Для предоставления доступа к обработчику доступным для другого сценария сохраните его как скомпилированный сценарий, затем используйте load script
команда для загрузки его в любом сценарии, который должен вызвать обработчик. Можно использовать этот метод для создания библиотек, содержащих много обработчиков.
Например, следующий сценарий содержит два обработчика: areaOfCircle
и factorial
:
-- This handler computes the area of a circle from its radius. |
-- (The area of a circle is equal to pi times its radius squared.) |
on areaOfCircle from radius |
-- Make sure the parameter is a real number or an integer. |
if class of radius is contained by {integer, real} |
return radius * radius * pi -- pi is predefined by AppleScript. |
else |
error "The parameter must be a real number or an integer" |
end if |
end areaOfCircle |
-- This handler returns the factorial of a number. |
on factorial(x) |
set returnVal to 1 |
if x > 1 then |
repeat with n from 2 to x |
set returnVal to returnVal * n |
end repeat |
end if |
return returnVal |
end factorial |
В Редакторе сценариев сохраните сценарий как скомпилированный Сценарий (который имеет расширение scpt
) или пакет сценария (расширение scptd
) и назовите его «NumberLib».
После сохранения сценария как скомпилированный сценарий другие сценарии могут использовать load script
команда для загрузки его. Например, следующий сценарий загружает скомпилированный сценарий NumberLib.scpt
, хранение получающегося script
объект в переменной numberLib
. Это тогда выполняет вызовы обработчика в a tell
оператор, предназначающийся script
объект. Скомпилированный сценарий должен существовать в указанном расположении для этого сценария для работы.
set numberLibrary to (load script file "NumberLib.scpt") |
tell numberLibrary |
factorial(10) --result: 3628800 |
areaOfCircle from 12 --result: 452.38934211693 |
end tell |