2010-06-12 24 views
6

Olası Çoğalt:
Import AppleScript methods in another AppleScript?#include

C #include yönergesi gibi kullanılabilir AppleScript şey var mı? Örneğin

:

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

o komut bir alt yordam erişmek için bunu komut dosyası yüklemek için böyle

INCLUDE_DIRECTIVE "Path/To/Applescript.scpt" 

//Some AppleScript code here 
+0

Yinelenen: // stackoverflow.com/sorular/2606136/ithalat-applescript-yöntemler-in-başka-AppleScript. – kiamlaluno

cevap

10

Kesinlikle Bunu yapabilirsin, ve iki varyasyon var. İlk yükler tüm komut dosyası:

Senaryo Foo.scpt

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

Senaryo Bar.scpt

ikinci bir senaryoyu yüklemek ve bu içindeki belirli yöntemleri çağırmak verir

display dialog "Bar" 
--Result: A window that displays "Bar" 
komut dosyası:

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" 

on Oop(Eek) 
    display dialog Eek 
    return "Eek: " & Eek 
end Oop 
2

Kullanım şey ...

set myValue to someMethod() of scriptLibrary 
1

diğer afişler söylediklerine eklemek için OopLib.scpt, load script yalnızca yerleşik seçenektir; çok ilkel, ama ihtiyaçlarınız mütevazi ise yeterli olabilir. Late Night Software'in Script Debugger editör bir # sağlar

dahil tarzı bir senaryo derlerken birden AppleScript dosyaları birleştirebilirsiniz kütüphane mekanizması. Script Debugger olumsuz birçok düzenli AppleScript kullanıcıları söyleyecektir o iyi yatırım değer olsa, satın almak birkaç yüz dolar olmasıdır.

Orada temel load script komuta üstünde daha sofistike ithalat mekanizmalarını uygulamak üçüncü taraf modülü yükleyici, Loader ve ModuleLoader, bir çift vardır ve sizin gereksinimleri daha karmaşık olup olmadığını bakarak değer. Ben derleme de modüllerini alabilir veya çeşitli standart ve kullanıcı tarafından belirlenen yerlerden zamanı çalıştırabilirsiniz (Yazdığım) ModuleLoader ama Loader kullanılmaz ettik ve otomatik modüllerin arasındaki karmaşık (hatta dairesel) bağımlılıkları çözecektir.

Yükleyicinin ve Modül Yükleyicinin olumsuz tarafları, ağır yüklerin bir kısmını yapmak için komut dosyası ekleme eklemeleri yapmaları gerektiğidir. Bu, komut dosyalarını dağıtırken bir sorun olabilir (Yükleyici durumunda, osax yalnızca komut dosyalarını derlemek için değil, bunlara ek olarak, gerçek içe aktarma işlemini gerçekleştirmek için komut dosyasına bazı boilerplate kodu eklemeniz gerekir. http

İlgili konular