0 votos

Variables de acceso a Applescript mediante la ejecución de script

Digamos que tengo un script:

set hi to 7
run script "display dialog hi"

Cuando lo ejecuto, dice que hi es indefinido.

¿Hay alguna manera de hacer hi accesible desde el run script ¿comando? Si no es así, ¿qué otra cosa puedo hacer? La aplicación real de esto es cambiar el nombre de una variable. Lo que hago ahora es

    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

Pero eso no funciona. ¿Hay alguna solución para esto?

Gracias

1voto

Johnsyweb Puntos 45395

Para que las variables persistan en el mismo ámbito, tienes que ejecutar todo tu switcharoos de variables en el mismo comando run script.

Esto demuestra cómo añadir una variable al texto de la ejecución script. Devolvería una lista de resultados de las variables. Sin embargo, este/su script no funciona porque estás asignando rand+1 a rand2+1, antes de que la variable rand2+1 haya sido asignada. No sé qué es lo que estás intentando conseguir, así que no puedo arreglar más tu script. Pero, esto responde a tu pregunta original específica, la sintaxis para añadir variables en el texto de una cadena script de ejecución.

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

0 votos

Pero eso no me permite acceder a variables fuera de run script que es lo que necesito (lo siento si no ha quedado claro). Así que, básicamente, ¿hay una manera de set una variable mediante run script que existe fuera de run script ?

0 votos

Básicamente sólo quiero una respuesta a mi primer script

0 votos

Si quieres una respuesta real a tu problema principal, necesitas proporcionar más detalles/contexto para tu script para obtener ayuda con lo que estás tratando de lograr. Como dije más abajo, tu script que proporcionaste no tiene sentido, ya que estás estableciendo una variable a otra variable antes de que esté definida. Y, deberías preguntarlo en su propio tema.

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