0 votos

¿Por qué es '(get …)' a veces necesario en AppleScript?

He estado escribiendo AppleScript durante muchos años y una pequeña técnica de sintaxis reflexiva que he aprendido a hacer cuando las cosas no funcionan es agregar un (obtener …) alrededor de lo que sea que esté haciendo.

Por ejemplo:

dile a la aplicación "Eventos del Sistema"
    dile al proceso de la aplicación "Alacritty"
        obtener elemento 1 del tamaño de la ventana frontal
    fin dile
fin dile

produce errores:

Eventos del Sistema obtuvo un error: No se puede hacer que el elemento 1 del tamaño de la ventana 1 del proceso de la aplicación "Alacritty" sea un especificador de tipo.

pero

dile a la aplicación "Eventos del Sistema"
    dile al proceso de la aplicación "Alacritty"
        obtener elemento 1 de (obtener tamaño de la ventana frontal)
    fin dile
fin dile

da como resultado el número esperado.

¿Alguien puede explicar por qué es esto?

3voto

Mockman Puntos 16

Creo que es porque el proceso de aplicación "Alacritty" no sabe cuáles son los tamaños de ventana, pero tu comando está dirigido (a través de Tell) a él. Cuando incluyes el segundo comando get dentro de los paréntesis, entonces algo más (ya sea System Events o el propio Applescript) realiza esa función.

Puedes leer lo que Apple tiene que decir al respecto aquí:

Referencia de Comandos > get

Sin embargo, un get explícito puede ser útil para forzar la evaluación temprana de parte de un especificador de objeto. Considera:

tell application "Finder" to get word 1 of name of home

-- Finder got an error: Can’t get word 1 of name of folder "myname" of folder "Users" of startup disk.

Esto falla porque Finder no sabe acerca de elementos de texto, como palabras. Sin embargo, Applescript sí sabe, así que el script tiene que hacer que Finder obtenga solo la parte del nombre de ...:

tell application "Finder" to get word 1 of (get name of home)

--resultado: "myname"

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