Buscar registro con lista por clave en AppleScript

2

¿Hay alguna forma de obtener un Registro por el valor de una de sus claves sin hacer un bucle?

He estado haciendo esto:

set theKey to 22

set theRecords to {{key:11, value:"foo"}, {key:22, value:"bar"}}
repeat with theRecord in theRecords
    if key of theRecord = theKey then
      display dialog (key of theRecord as text) & ":" & value of theRecord
    end if
end repeat
    
pregunta craig 09.09.2013 - 21:36

1 respuesta

1

Supongo que estás preocupado por la velocidad de iteración. La iteración sería un tiempo de orden-n O (n).

En AppleScript, posiblemente puede usar un registro de registros en lugar de una lista de registros, pero creo que entonces la clase de la clave tendría que ser un identificador, no un entero como en su ejemplo.

Aquí hay un enlace a alguien con una pregunta similar: Emulando matrices asociativas en AppleScript

La respuesta de Lauri Ranta es usar la herramienta de línea de comandos llamada "awk".

La solución con la que jugué fue hacer una aplicación de fondo sin rostro que sería lo que se denomina un "Agente" al que AppleScript podría recurrir para utilizar sus estructuras de datos, como una matriz asociativa (también conocida como diccionario o Mapping). )

No terminé mi solución. Es solo una idea, pero podrías usar la respuesta de Lauri, ella generalmente sabe de lo que está hablando.

Como sé un poco de Pyton, y como Pyton viene con OS X, preinstalado en la carpeta del sistema, consideraría usar Python por mi cuenta.

Lo intenté nuevamente en "AppleScript puro" con el siguiente código con el que no estoy muy contento:

set theRecords to {fooKey:{key:"fooKey", value:"fooValue"}, barKey:{key:"barKey", value:"barValue"}}
try
    set theRecord to get barKey of theRecords
    display dialog (key of theRecord & ":" & value of theRecord)
on error errorMessage number errorNumber
    if errorNumber is not equal to -128 then
        display dialog "No match"
    end if
end try

Puedes mezclar shell script y AppleScripts:

-- in AppleScript, you can call a shell script
do shell script "<enter your shell script here>"

O, puede llamar a un AppleScript desde un script de shell con la herramienta de línea de comandos llamada "osascript".

    
respondido por el Kaydell 09.09.2013 - 22:48

Lea otras preguntas en las etiquetas