AppleScript中的#include like指令

时间:2010-06-12 03:30:57

标签: include applescript

  

可能重复:
  Import AppleScript methods in another AppleScript?

AppleScript中是否可以像C中的#include指令一样使用?

例如:

INCLUDE_DIRECTIVE "Path/To/Applescript.scpt"

//Some AppleScript code here

3 个答案:

答案 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用户会告诉你这是值得的投资。

有几个第三方模块加载器LoaderModuleLoader,它们在基本的load script命令之上实现了更复杂的导入机制,值得研究一下你的要求更复杂。我没有使用ModuleLoader,但是Loader(我写的)可以在编译或运行时从各种标准和用户指定的位置导入模块,并将自动解决模块之间的复杂(甚至是循环)依赖关系。

Loader和ModuleLoader的缺点是它们依赖脚本添加来完成一些繁重的工作,这在分发脚本时可能是一个问题(在Loader的情况下,只需要osax来编译脚本,而不是运行它们),此外,您需要在脚本中添加一些样板代码以执行实际导入。