AppleScript中是否可以像C中的#include
指令一样使用?
例如:
INCLUDE_DIRECTIVE "Path/To/Applescript.scpt"
//Some AppleScript code here
答案 0 :(得分:11)
绝对可以做到这一点,并且有两种变化。第一个加载整个脚本:
脚本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
答案 1 :(得分:3)
使用类似的东西加载脚本
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
答案 2 :(得分:1)
要添加其他海报所说的内容,load script
是唯一的内置选项;它非常原始,但如果您的需求适中,可能就足够了。
深夜软件的Script Debugger编辑器提供了一种#include-style库机制,可以在编译脚本时合并多个AppleScript文件。 Script Debugger的缺点是需要花几百美元购买,尽管许多普通的AppleScript用户会告诉你这是值得的投资。
有几个第三方模块加载器Loader和ModuleLoader,它们在基本的load script
命令之上实现了更复杂的导入机制,值得研究一下你的要求更复杂。我没有使用ModuleLoader,但是Loader(我写的)可以在编译或运行时从各种标准和用户指定的位置导入模块,并将自动解决模块之间的复杂(甚至是循环)依赖关系。
Loader和ModuleLoader的缺点是它们依赖脚本添加来完成一些繁重的工作,这在分发脚本时可能是一个问题(在Loader的情况下,只需要osax来编译脚本,而不是运行它们),此外,您需要在脚本中添加一些样板代码以执行实际导入。