Applescript Accede alle variabili tramite Script di esecuzione

0

Diciamo che ho uno script:

set hi to 7
run script "display dialog hi"

Quando lo eseguo, dice che hi non è definito.

C'è un modo per rendere accessibile hi dal comando run script ? Se no, che altro posso fare? La vera applicazione per questo è cambiare un nome di variabile. Quello che faccio ora è:

    repeat (random number from 0 to 5) times
    set rand2 to (random number from 0 to 7) + 97
    set rand to (random number from 0 to 7) + 97
    set switch to rand2
    run script ("set " & (ASCII character rand) & "1 to " & (ASCII character rand2) & "1")
    run script ("set " & (ASCII character rand2) & "1 to " & (ASCII character switch) & "1")
    run script ("set " & (ASCII character rand) & "2 to " & (ASCII character rand2) & "2")
    run script ("set " & (ASCII character rand2) & "2 to " & (ASCII character switch) & "2")
end repeat

Ma quello non funziona. Sono questi sono un workaround per questo?

Grazie

    
posta APCoding 30.10.2015 - 02:36
fonte

1 risposta

1

Affinché le variabili persistano nello stesso ambito, devi eseguire l'intera variabile switcharoos nello stesso comando di esecuzione dello script.

Questo dimostra come aggiungere una variabile al testo dello script di esecuzione. Restituirebbe un elenco di risultati dalle variabili. Tuttavia, questo / il tuo script non funziona perché stai assegnando rand + 1 a rand2 + 1, prima che la variabile rand2 + 1 sia stata assegnata. Non so cosa stai cercando di realizzare, quindi non posso aggiustare di più il tuo script. Ma questo risponde alla tua specifica domanda originale, sintassi per l'aggiunta di variabili nel testo di una stringa di script di esecuzione.

repeat (random number from 0 to 5) times
    set rand2 to (ASCII character ((random number from 0 to 7) + 97))
    set rand to (ASCII character ((random number from 0 to 7) + 97))
    set switch to rand2

    set scriptText to ("set " & rand & "1 to " & rand2 & "1" & return & ¬
        "set " & rand2 & "1 to " & switch & "1" & return & ¬
        "set " & rand & "2 to " & rand2 & "2" & return & ¬
        "set " & rand2 & "2 to " & switch & "2" & return & ¬
        "return {" & rand & "1, " & rand2 & "1, " & rand & "2, " & rand2 & "2}")
    set theResult to run script scriptText
end repeat
    
risposta data 30.10.2015 - 06:56
fonte

Leggi altre domande sui tag