Trova Registra con Elenco per tasto in AppleScript

2

C'è un modo per ottenere un record dal valore di una delle sue chiavi senza eseguire il ciclo?

Ho fatto questo:

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
    
posta craig 09.09.2013 - 21:36
fonte

1 risposta

1

Suppongo che tu sia preoccupato della velocità di iterazione. L'iterazione sarebbe un tempo di ordine -n O (n).

In AppleScript, puoi usare un record di record invece di un elenco di record, ma credo che la classe della chiave debba essere un identificatore, non un intero come nel tuo esempio.

Ecco un link a qualcuno con una domanda simile: Emulazione di matrici associative in AppleScript

La risposta di Lauri Ranta è di usare lo strumento da riga di comando chiamato "awk".

La soluzione con cui mi sono divertito è stata quella di creare un'app di sfondo senza volto che sarebbe stata chiamata "Agente" che AppleScript potrebbe utilizzare per utilizzare le sue strutture dati come un array associativo (noto anche come dizionario o mappatura. )

Non ho ottenuto la mia soluzione. È solo un'idea, ma potresti usare la risposta di Lauri, di solito sa di cosa sta parlando.

Dato che conosco un po 'Pyton, e poiché Pyton viene fornito con OS X, preinstallato nella cartella System, prenderei in considerazione l'utilizzo di Python.

L'ho provato di nuovo in "puro AppleScript" con il seguente codice di cui non sono veramente soddisfatto:

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

Puoi combinare script di shell e AppleScript:

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

Oppure puoi chiamare un AppleScript da uno script di shell con lo strumento da riga di comando chiamato "osascript".

    
risposta data 09.09.2013 - 22:48
fonte

Leggi altre domande sui tag