If e If Else dichiarazioni condizionali AppleScript

Le dichiarazioni condizionali sono la spina dorsale di molti linguaggi di programmazione e scripting. In AppleScript, forniscono un modo per aggiungere un'altra dimensione di complessità agli script analizzando e rispondendo a varie situazioni. Questo tutorial darà un'occhiata da vicino Se e se altro dichiarazioni e i vari modi per implementarle in uno script.


Immergiti in profondità in AppleScript

Finora abbiamo pubblicato due articoli che sono perfetti per portarti da un principiante completo a qualcuno in grado di lavorare con competenza su una base di script:

  • The Ultimate Beginner's Guide di AppleScript
  • Tecniche avanzate di AppleScript

Queste esercitazioni servono come una panoramica e ti danno una buona idea di come funziona AppleScript e di quali tipi di strutture di programmazione sono coinvolte. Se sei davvero intenzionato a diventare un master script writer, dovrai approfondire la sintassi e i costrutti che compongono AppleScript.

Non ti preoccupare, siamo con te ad ogni passo. Questo è il primo di una serie di articoli che prenderà in esame i diversi aspetti di AppleScript in modo da poter sfruttare la sua straordinaria potenza per automatizzare il tuo Mac.

Mancia: Per eseguire gli script in questo post, è necessario aprire l'app "AppleScript Editor", che può essere trovata in Applicazioni> Utility.


Cosa succede se?

In AppleScript, ti verrà difficile trovare due personaggi che rivaleggiano con il potere di "se". Se impari a maneggiare correttamente questo strumento apparentemente semplice, andrai lontano.

Un fondamento Se la dichiarazione funziona molto come a raccontare bloccare. Solo per un aggiornamento, ecco la struttura di a raccontare:

[AppleScript]
dire all'applicazione "Safari"
attivare
fine raccontare
[/ AppleScript]

Come puoi vedere, questo script avvia Safari. Ha tre linee: la prima e l'ultima comprendono il tell "block", che deve sempre contenere un fine dichiarazione. Tutto tra queste due linee costituisce il corpo del tell block.

Le dichiarazioni condizionali, così come molti altri costrutti, prendono in prestito questa stessa struttura, solo questa volta che usiamo Se invece di raccontare.

[AppleScript]
se è vero allora
--fare qualcosa
finisci se
[/ AppleScript]

Questa struttura è piuttosto semplice e dovrebbe avere perfettamente senso. Innanzitutto, si avvia la dichiarazione condizionale e si qualifica con un booleano, quindi si scrivono i comandi che si innescano nel caso di una verità e, infine, si chiude la dichiarazione con un fine.


Anatomia di un'affermazione condizionale

Mancia: In AppleScript Editor, non è necessario digitare "end if", solo "end". Il compilatore aggiungerà automaticamente il resto, anche se sono presenti più istruzioni finali appartenenti a diversi tipi di blocchi. Capisce tutto per te!


Boolie What Now?

Prima di andare oltre, è assolutamente fondamentale capire esattamente cosa intendo quando mi riferisco a un booleano. Boolean è un tipo di dati che può avere solo uno dei due valori: vero o falso. Nel mondo dell'informatica, gli assoluti esistono assolutamente. O qualcosa è, o non lo è, non c'è in mezzo.

AppleScript può facilmente capire se alcune cose sono vere e utilizzare questa conoscenza per alimentare un'istruzione condizionale. Per provarlo, prova a digitare una dichiarazione di uguaglianza direttamente in AppleScript Editor ed eseguila.


"Vero" viene restituito

Come puoi vedere, il compilatore ha valutato l'istruzione "10> 1" e ha restituito correttamente "true". Se giriamo il simbolo di uguaglianza e giriamo "10 < 1", "false" is returned. This goes way beyond numeric expressions, pretty much any statement that AppleScript is able to evaluate should work as well. Here's a quick check of the current day of the week, which returns "true".


ApplScript può valutare tutti i tipi di dichiarazioni diverse.

Come i condizionali usano booleani

Ora che capisci cos'è un booleano, è più facile capire come funzionano i condizionali. Come abbiamo visto nel grafico sopra, un'istruzione condizionale dice "se questo valore booleano è vero, allora fai qualcosa".

Vediamo questo in pratica usando la frase "10> 1" che abbiamo testato in precedenza:

[AppleScript]
se 10> 1 allora
torna "È vero!"
finisci se
[/ AppleScript]

Qui abbiamo sostituito la parola "true" con qualcosa che vogliamo che AppleScript valuti. La struttura qui è esattamente ciò che abbiamo visto prima:


Ripartizione di una dichiarazione condizionale.

Data questa struttura, i comandi all'interno dell'istruzione if verranno eseguiti solo se il valore booleano risulta vero. In questo caso, l'affermazione è vera, quindi vedremo quanto segue nella parte "Risultato" della finestra di AppleScript Editor.


La sceneggiatura ha restituito "È vero!"

Condizionatori a linea singola

Nel caso ve lo stiate chiedendo, c'è una forma speciale e succinta di un Se affermazione che occupa solo una singola riga. Non richiede una "fine" e non può prendere nessuna delle complessità aggiunte che vedremo nella prossima sezione, ma è utile per casi semplici.

[AppleScript]
--Riga singola se dichiarazione
se 10> 2 restituisce "sì"
[/ AppleScript]


Altro

Se le dichiarazioni sono fantastiche, ma sono un po 'limitate nella forma che abbiamo visto finora. Per esempio, cosa succede se il booleano nella sceneggiatura risulta essere falso? Ecco un esempio:

[AppleScript]
imposta da x a 20

se 10> x allora
restituisce "10 è maggiore di" & x
finisci se
[/ AppleScript]

Come puoi vedere, sto aumentando gradualmente la complessità in questo modo in modo da acquisire maggiore familiarità con schemi e costrutti comuni. In questo esempio, per prima cosa impostiamo una variabile, X, quindi imposta quella variabile su 20. Ora, quando gestiamo il nostro Se dichiarazione, il numero 10 viene confrontato con la variabile.

In questo caso, 10 non è maggiore di 20, quindi il valore booleano sarà falso. Ciò significa che il nostro script non farà nulla! Per risolvere questo problema, ci rivolgiamo a altro. Modifichiamo un po 'il nostro script:

[AppleScript]
imposta da x a 20

se 10> x allora
restituisce "10 è maggiore di" & x
altro
return "10 non è maggiore di" & x
finisci se
[/ AppleScript]

La cosa bella di AppleScript è che è leggibile in modo umano. Se leggi semplicemente questo script ad alta voce, sarai in grado di dire esattamente cosa fa. Ecco il rundown:

  • Assegna un valore di 20 a X
  • Confronta il numero 10 a X per vedere se 10 è maggiore
  • Se 10> x, restituire la seguente dichiarazione
  • In caso contrario (altro), restituire invece questa altra istruzione

Dato che 10 non è maggiore di 20, verrà restituita la seconda istruzione. Il risultato dovrebbe essere simile a questo:


La sceneggiatura ha restituito "È vero!"

Ora che possiamo tenere conto di due diversi scenari booleani, siamo molto più adatti ad affrontare sfide di scripting complesse.

Altro se

Come puoi immaginare, anche questo non è sufficiente per tenere conto di tutte le diverse situazioni in cui ti imbatterai. Forse abbiamo uno scenario abbastanza complesso in cui è possibile ottenere una serie di risultati diversi.

In questo scenario, possiamo implementare altrimenti se per continuare ad aggiungere complessità al nostro Se dichiarazione. Considera quanto segue:

[AppleScript]
impostare il giorno lavorativo settimanale (giorno corrente)

se (theWeekDay = Friday) allora
torna "Sei quasi libero!"
altrimenti se (theWeekDay = Saturday) allora
torna "È il fine settimana!"
altrimenti se (theWeekDay = Sunday) allora
ritorno "Rilassati, per domani lavoriamo".
altro
return "Hang in there, non è ancora il fine settimana!"
finisci se
[/ AppleScript]

Ancora una volta, anche se non hai familiarità con AppleScript, il linguaggio naturale rende abbastanza facile capire cosa sta succedendo. Innanzitutto, impostiamo una variabile sul giorno della settimana corrente. Successivamente, eseguiamo una serie di test utilizzando Se, altrimenti se e altro per arrivare a un messaggio di ritorno appropriato dato il giorno corrente della settimana.


"Altrimenti se" in azione.

In fuga, lo script proverà il primo Se dichiarazione. Se ciò si rivela vero, verrà eseguita la prima dichiarazione di ritorno e lo script terminerà (non vengono eseguiti ulteriori passaggi). Tuttavia, se tale affermazione si rivela falsa, la prima altrimenti se viene provato, poi il secondo e infine, se nessuno di quelli si rivela vero, l'ultimo altro prende a calci e restituisce una dichiarazione a riguardo non essendo il fine settimana ancora.

Il codice più snello è migliore

Il altrimenti se la struttura è incredibilmente potente e consente di tenere conto di un numero qualsiasi di scenari diversi. Mentre programmi alcuni progetti, potresti essere tentato a volte di mettere insieme cinque, dieci o anche quindici altrimenti se dichiarazioni per scorrere tutte le possibilità disponibili. Sfortunatamente, questo non è tipicamente un buon modo per codificare e può portare a una tonnellata di inutili ingombri.

Sii consapevole quando usi altrimenti se e chiediti se c'è un modo migliore per andare su quello che stai cercando di realizzare. Spesso è molto più pratico e breve usare un loop di qualche tipo, ma questo è un articolo per un altro giorno (in arrivo!).

Questo o quello?

Un ultimo consiglio veloce per quanto riguarda Se dichiarazioni. Un'alternativa a altro è da usare o anziché. Ecco una versione semplificata dello script della settimana usando o e solo due possibili dichiarazioni di ritorno.

[AppleScript]
impostare il giorno lavorativo settimanale (giorno corrente)

se (theWeekDay = Saturday) o (theWeekDay = Sunday) allora
torna "È il fine settimana!"
altro
return "Hang in there, non è ancora il fine settimana!"
finisci se
[/ AppleScript]

Rimanete sintonizzati

Questo copre la maggior parte di ciò che devi sapere sui condizionali. Apri l'AppleScript Editor e inizia a sperimentare con le tue dichiarazioni condizionali. Che script interessanti puoi inventare?

Questa è solo la punta dell'iceberg proverbiale per quanto riguarda la nostra copertura di AppleScript. Questo è un argomento incredibilmente espansivo che ha molte potenzialità per aumentare la tua padronanza sul tuo Mac, quindi avremo molti più tutorial AppleScript per aiutarti a diventare un vero esperto di automazione.