2010-06-12 8 views

Respuesta

10

Absolutamente puedes hacer esto, y hay dos variaciones. Las primeras cargas de todo el guión:

Guión Foo.scpt

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

Guión Bar.scpt

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

El segundo permite cargar un script y llamar a métodos específicos dentro de ese secuencia de comandos:

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

usar algo como esto para cargar el guión

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

A continuación, para acceder a una subrutina en la que el guión de este modo ...

set myValue to someMethod() of scriptLibrary 
1

que añadir a lo que otros críticos han dicho, load script es la única opción integrada; es muy primitivo, pero puede ser suficiente si tus necesidades son modestas.

El editor Script Debugger de Late Night Software ofrece un mecanismo de biblioteca #incluir-estilo que puede combinar múltiples archivos AppleScript al compilar un script. La desventaja de Script Debugger es que cuesta un par de cientos de dólares comprar, aunque muchos usuarios regulares de AppleScript le dirán que vale la pena la inversión.

Hay un par de cargadores de módulos de terceros, y LoaderModuleLoader, que implementan mecanismos de importación más sofisticados en la parte superior de la orden básica load script, y son vale la pena analizar si sus necesidades son más complejas. No he usado ModuleLoader, pero Loader (que escribí) puede importar módulos en compilación o en tiempo de ejecución desde varias ubicaciones estándar y especificadas por el usuario, y automáticamente resolverá dependencias complejas (incluso circulares) entre módulos.

Las desventajas de Loader y ModuleLoader es que se basan en adiciones de secuencias de comandos para hacer parte del trabajo pesado, lo que podría ser un problema cuando la distribución de secuencias de comandos (en el caso del cargador, el osax sólo es necesario para compilar los scripts, no correr ellos), además de que necesita agregar un código repetitivo a su secuencia de comandos para realizar la importación real.

Cuestiones relacionadas