2010-06-12 90 views

回答

10

絕對你可以做到這一點,並有兩種變化。第一次加載整個腳本:

腳本Foo.scpt

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

腳本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 
2

使用這樣的加載腳本

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 
1

要添加什麼其他的海報說,load script是唯一內置選項;這是非常原始的,但如果您的需求適中,可能就足夠了。

Late Night Software的Script Debugger編輯器提供了#include-style庫機制,可在編譯腳本時合併多個AppleScript文件。腳本調試器的缺點是購買數百美元,但許多普通的AppleScript用戶會告訴你這是非常值得的投資。

有幾個第三方模塊加載程序LoaderModuleLoader,它們在基本的load script命令之上實現更復雜的導入機制,並且值得關注的是如果您的要求更復雜。我沒有使用ModuleLoader,但是Loader(我寫的)可以在編譯或運行時從各種標準和用戶指定的位置導入模塊,並且會自動解決模塊之間的複雜(甚至循環)依賴關係。

Loader和ModuleLoader的缺點是它們依賴於腳本添加來完成一些繁重的工作,這可能是分發腳本時的一個問題(在Loader的情況下,osax只需要編譯腳本,而不是運行他們),再加上你需要添加一些樣板代碼到你的腳本來執行實際的導入。

相關問題