代码之家  ›  专栏  ›  技术社区  ›  Mark Szymanski

#在applescript中包含like指令[重复]

  •  6
  • Mark Szymanski  · 技术社区  · 16 年前

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

    applescript中有什么可以像 #include C指令?

    例如:

    INCLUDE_DIRECTIVE "Path/To/Applescript.scpt"
    
    //Some AppleScript code here
    
    3 回复  |  直到 16 年前
        1
  •  11
  •   Philip Regan    16 年前

    当然,你可以这样做,有两种变化。第一个加载整个脚本:

    脚本文件

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

    脚本文件

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

    第二种方法允许您加载脚本并调用该脚本中的特定方法:

    英尺

    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"
    

    奥普利布

    on Oop(Eek)
        display dialog Eek
        return "Eek: " & Eek
    end Oop
    
        2
  •  3
  •   regulus6633    16 年前

    使用类似的方法加载脚本

    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
  •  1
  •   has    16 年前

    为了补充其他海报所说的话, load script 是唯一的内置选项;它是非常原始的,但如果您的需求是适度的,可能就足够了。

    深夜软件 Script Debugger 编辑器提供包含样式库机制,可以在编译脚本时合并多个AppleScript文件。脚本调试程序的缺点是它需要花几百美元来购买,尽管许多普通的AppleScript用户会告诉你它非常值得投资。

    有两个第三方模块装载机, Loader ModuleLoader 在基本的基础上实施更复杂的进口机制 加载脚本 命令,如果您的需求更复杂,则值得研究。我没有使用moduleloader,但是loader(我写的)可以在编译或运行时从不同的标准和用户指定的位置导入模块,并自动解决模块之间复杂的(甚至是循环的)依赖关系。

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