6 votos

Buscar Registro con la Lista clave en AppleScript

Hay manera de conseguir un Registro por el valor de uno de sus llaves, sin 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

4voto

Kaydell Puntos 229

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

En AppleScript, usted posiblemente puede utilizar un registro de los registros en lugar de una lista de registros, pero creo que la clase de la clave tiene que ser un identificador (no entero, como en tu ejemplo.

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

Lauri ranta le la respuesta es utilizar la herramienta de línea de comandos llamada "awk".

La solución que he jugado con el fue a hacer un rostro de fondo de la aplicación que sería lo que se llama un "Agente" que AppleScript podría llamar para el uso de su datastructures como un array asociativo (también conocido como un diccionario o una Asignación.)

Yo no se mi de la solución de hecho. Es sólo una idea, pero se puede usar Lauri la respuesta, por lo general se las sabe de qué está hablando.

Desde que me conozco un poco Pyton, y desde Pyton viene con OS X, pre-instalado en la Carpeta del Sistema, me gustaría considerar el uso de Python a mí mismo.

Lo intenté de nuevo en "pura AppleScript" con el siguiente código que no estoy muy contento con:

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

Usted puede mezclar secuencia de comandos de shell y AppleScripts:

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

O, puede llamar a un AppleScript a partir de un guión del intérprete de comandos con la herramienta de línea de comandos llamada "osascript".

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X