#include как директива в AppleScript [дубликат]

6
задан Community 23 May 2017 в 12:18
поделиться

3 ответа

Абсолютно вы можете сделать это, и есть два варианта . Первый загружает весь сценарий:

Script Foo.scpt

set theBar to "path:to:Bar.scpt" as alias
run script (theBar)

Script Bar.scpt

display dialog "Bar"
--Result: A window that displays "Bar"

Второй позволяет загружать сценарий и вызывать определенные методы внутри этого сценария:

Foo.scpt

property OopLib : load script POSIX file "/Users/philipr/Desktop/OopLib.app"
tell OopLib
    set theResult to Oop(1)
    display dialog theResult
end tell
--> result: Window displaying "Eek: 1"

OopLib. scpt

on Oop(Eek)
    display dialog Eek
    return "Eek: " & Eek
end Oop
11
ответ дан 8 December 2019 в 15:59
поделиться

В дополнение к сказанному на других плакатах, скрипт загрузки - единственная встроенная опция; это очень примитивно, но может быть достаточно, если ваши потребности скромны.

Редактор Script Debugger Late Night Software предоставляет библиотечный механизм в стиле # include, который может объединять несколько файлов AppleScript при компиляции сценария. Обратной стороной Script Debugger является то, что его можно купить за пару сотен долларов, хотя многие обычные пользователи AppleScript скажут вам, что это того стоит.

Есть несколько сторонних загрузчиков модулей, Loader и ModuleLoader , которые реализуют более сложные механизмы импорта поверх основной команды load script . , и стоит изучить, если ваши требования более сложные. Я не использовал ModuleLoader, но Loader (который я написал) может импортировать модули во время компиляции или выполнения из различных стандартных и указанных пользователем мест и автоматически разрешает сложные (даже циклические) зависимости между модулями.

Недостатками Loader и ModuleLoader является то, что они полагаются на дополнения к сценариям для выполнения тяжелой работы, что может быть проблемой при распространении сценариев (в случае Loader osax нужен только для компиляции сценариев, а не для их запуска. ), плюс вам нужно добавить в скрипт шаблонный код для выполнения фактического импорта.

1
ответ дан 8 December 2019 в 15:59
поделиться

Используйте что-то вроде этого для загрузки скрипта

set scriptLibraryPath to (path to scripts folder from user domain as text) & "myScript.scpt"
set scriptLibrary to load script scriptLibraryPath as alias

Затем для доступа к подпрограмме в этом скрипте сделайте следующее...

set myValue to someMethod() of scriptLibrary
3
ответ дан 8 December 2019 в 15:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: