2010-06-12 10 views
6

가능한 중복 :
Import AppleScript methods in another AppleScript?사용법 #include

C에서 #include 지시자처럼 사용할 수있는 경우 애플 있나요? 예를 들어

:

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

해당 스크립트에 서브 루틴에 액세스 할이 작업을 수행 할 스크립트를로드하려면이 같은

INCLUDE_DIRECTIVE "Path/To/Applescript.scpt" 

//Some AppleScript code here 
+0

중복 된 http : // stackoverflow.com/questions/2606136/import-applescript-methods-in-another-applescript를 참조하십시오. – kiamlaluno

답변

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" 

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

사용 뭔가 ...

set myValue to someMethod() of scriptLibrary 
1

다른 포스터가 말한에 추가하려면 OopLib.scpt는 load script 유일한 내장 옵션입니다; 그것은 매우 원시적이지만, 당신의 요구가 겸손 할 때 충분할 수 있습니다.

늦은 밤 소프트웨어의 Script Debugger 편집기는 스크립트를 컴파일 할 때 여러 AppleScript 파일을 병합 할 수있는 # include 스타일 라이브러리 메커니즘을 제공합니다. Script Debugger의 단점은 많은 일반 AppleScript 사용자가 투자 가치가 있다고 말할지라도 구매할 가치가 2 백 달러라는 점입니다.

가 기본 load script 명령의 위에 더 정교한 수입 메커니즘을 구현 타사 모듈 로더, LoaderModuleLoader의 부부, 그리고 요구 사항이 더 복잡한 경우에 찾고 가치가있다. ModuleLoader를 사용하지는 않았지만 Loader는 다양한 표준 및 사용자 지정 위치에서 모듈을 컴파일 또는 런타임에 가져올 수 있으며 모듈 간의 복잡한 (심지어 원형) 종속성을 자동으로 해결합니다.

Loader 및 ModuleLoader의 단점은 스크립트를 추가 할 때 스크립트를 배포 할 때 문제가 될 수있는 스크립트 추가에 의존한다는 것입니다 (Loader의 경우 osax는 스크립트를 컴파일 할 때만 필요하며 실행하지 않아야 함). 실제 가져 오기를 수행하려면 스크립트에 상용구 코드를 추가해야합니다.