Dacă și dacă alte declarații condiționale AppleScript

Declarațiile condiționate sunt coloana vertebrală a multor limbi de programare și scripting. În AppleScript, ele oferă o modalitate prin care puteți adăuga o altă dimensiune a complexității scripturilor dvs., analizând și răspunzând la diferite situații. Acest tutorial va arunca o privire atentă la dacă și dacă altceva declarațiile și diferitele modalități de a le pune în aplicare într-un scenariu.


Scufundând adânc în AppleScript

Până acum am publicat două articole care sunt perfecte pentru a vă duce de la un novice complet la cineva care poate lucra cu competență în jurul unui script de bază:

  • Ghidul Ultimate pentru începători la AppleScript
  • Tehnici avansate AppleScript

Aceste tutoriale servesc ca o prezentare generală și vă oferă o idee bună despre cum funcționează AppleScript, precum și ce tipuri de structuri de programare sunt implicate. Dacă intenționați cu adevărat să deveniți scriitor de scenarii de master, va trebui să mergeți mult mai adânc în sintaxa și construcțiile care alcătuiesc AppleScript.

Nu vă faceți griji, suntem cu voi la fiecare pas. Aceasta este prima dintr-o serie de articole care vor avea o durată lungă de analiză a diferitelor aspecte ale AppleScript, astfel încât să puteți utiliza puterea minunată a acesteia pentru a vă automatiza Mac.

Bacsis: Pentru a rula scripturile din această postare, va trebui să deschideți aplicația "AppleScript Editor", care poate fi găsită în Aplicații> Utilitare.


Ce-ar fi dacă?

În AppleScript, veți fi greu de apăsat pentru a găsi două personaje care rivalizează puterea "dacă". Dacă învățați să folosiți acest instrument aparent simplu, veți merge departe.

O bază dacă declarația funcționează foarte mult ca o spune bloc. Doar pentru o reîmprospătare, iată structura a spune:

[AppleScript]
spuneți aplicația "Safari"
Activati
sfarsitul spune
[/ AppleScript]

După cum puteți vedea, acest script lansează Safari. Are trei linii: prima și ultima cuprind "spune" blocul, care trebuie să conțină întotdeauna un Sfârșit afirmație. Totul între aceste două linii formează corpul blocului tell.

Declarațiile condiționale, precum și multe alte construcții, împrumută aceeași structură, numai de această dată pe care o folosim dacă in loc de spune.

[AppleScript]
dacă este adevărat atunci
--Fă ceva
sfârșit dacă
[/ AppleScript]

Această structură este destul de simplă și ar trebui să aibă sens. Mai intai, incepeti afirmatia conditionala si calificati-o cu un boolean, apoi scrieti comenzile care se declanseaza in cazul unui adevar si in cele din urma inchideti afirmatia cu un Sfârșit.


Anatomia unei afirmații condiționate

Bacsis: În editorul AppleScript, nu este nevoie să tastați "end if", doar "end". Compilatorul va adăuga automat restul, chiar dacă aveți mai multe instrucțiuni finale care aparțin diferitelor tipuri de blocuri. Ea îți arată totul pentru tine!


Boolie ce acum?

Înainte de a merge mai departe, este absolut esențial să înțelegeți exact ce vreau să spun când mă refer la un boolean. Boolean este un tip de date care poate avea una din cele două valori: true sau false. În lumea computerelor, absolutele există absolut. Fie ceva este, fie nu, nu există între ele.

AppleScript poate da seama cu ușurință dacă anumite lucruri sunt adevărate și utilizează aceste cunoștințe pentru a forța o afirmație condiționată. Pentru a încerca, încercați să tastați într-o instrucțiune de egalitate direct în editorul AppleScript și să îl rulați.


"Adevărat" este returnat

După cum puteți vedea, compilatorul a evaluat instrucțiunea "10> 1" și a returnat corect "true". Dacă vom răsturna acest simbol al egalității și vom rula "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 poate evalua toate tipurile de afirmații diferite.

Cum condiționează utilizarea booleanelor

Acum, că înțelegeți ce este boolean, este mai ușor să vă împachetați mintea în jurul modului în care funcționează condiționările. Așa cum am văzut în graficul de mai sus, o afirmație condiționată spune: "dacă acest boolean este evaluat ca fiind adevărat, atunci faceți ceva".

Să vedem acest lucru în practică folosind declarația "10> 1" pe care am testat-o ​​mai devreme:

[AppleScript]
dacă 10> 1 atunci
reveniți "Așa este!"
sfârșit dacă
[/ AppleScript]

Aici am înlocuit cuvântul "adevărat" cu ceva ce vrem ca AppleScript să evalueze. Structura de aici este exact ceea ce am văzut înainte:


Defalcarea unei declarații condiționate.

Având în vedere această structură, comenzile din interiorul instrucțiunii if se execută numai dacă booleanul se dovedește a fi adevărat. În acest caz, afirmația este adevărată, deci vom vedea următoarele în porțiunea "Rezultat" a ferestrei Editor AppleScript.


Scenariul a revenit "Așa este!"

Condiții unice de linie

În cazul în care vă întrebați, există o formă specială și succintă a unui dacă declarație care ocupă doar o singură linie. Nu are nevoie de un "sfârșit" și nu poate lua niciuna din complexitatea adăugată pe care o vom vedea în secțiunea următoare, dar este utilă pentru cazuri simple.

[AppleScript]
--Instrucțiune cu o singură linie dacă
dacă 10> 2 se întoarce "da"
[/ AppleScript]


altfel

Dacă declarațiile sunt minunate, dar sunt puțin limitate în forma pe care am văzut-o până acum. De exemplu, dacă booleanul din scenariu sa dovedit a fi fals? Iată un exemplu:

[AppleScript]
setați x la 20

dacă 10> x atunci
retur "10 este mai mare decât" & x
sfârșit dacă
[/ AppleScript]

După cum puteți vedea, cresc treptat complexitatea aici, astfel încât să deveniți mai familiarizați cu modelele și construcțiile comune. În acest exemplu, am setat mai întâi o variabilă, X, apoi setați acea variabilă egală cu 20. Acum când ne executăm dacă , numărul 10 este comparat cu variabila.

În acest caz, 10 nu este mai mare de 20, deci booleanul va fi fals. Aceasta înseamnă că scenariul nostru nu va face nimic! Pentru a rezolva această problemă, ne îndreptăm spre altfel. Să ne modificăm puțin scriptul:

[AppleScript]
setați x la 20

dacă 10> x atunci
retur "10 este mai mare decât" & x
altfel
retur "10 nu este mai mare decât" & x
sfârșit dacă
[/ AppleScript]

Marele lucru despre AppleScript este că este atât de ușor de citit de om. Dacă citiți cu voce tare acest script, veți putea spune exact ce face. Iată rezumatul:

  • Alocă o valoare de 20 la X
  • Compară numărul 10 la X pentru a vedea dacă 10 este mai mare
  • Dacă 10> x, returnați următoarea declarație
  • Dacă nu (altceva), returnați această altă declarație

Dat fiind faptul că 10 nu este mai mare de 20, cea de-a doua declarație va fi returnată. Rezultatul dvs. ar trebui să arate astfel:


Scenariul a revenit "Așa este!"

Acum, că putem explica două scenarii booleene diferite, suntem mult mai potrivite pentru a aborda provocările complexe de scripting.

Altfel Dacă

După cum vă puteți imagina, chiar și acest lucru nu este suficient pentru a explica toate situațiile diferite pe care le veți întâlni. Poate că avem un scenariu destul de complex în care sunt posibile mai multe rezultate diferite.

În acest scenariu, putem implementa altfel dacă să continuăm să adăugăm complexitatea noastră dacă afirmație. Luați în considerare următoarele:

[AppleScript]
setați Weekday la ziua de (data curentă)

dacă (TheWeekDay = Vineri) atunci
retur "Sunteți aproape liber!"
altfel dacă (theWeekDay = Sâmbătă) atunci
retur "Este weekend-ul!"
altfel daca (TheWeekDay = Duminica) atunci
reveniți "Relaxați-vă, pentru mâine lucrăm."
altfel
întoarce-te "Stai acolo, nu e încă weekendul!"
sfârșit dacă
[/ AppleScript]

Încă o dată, chiar dacă nu sunteți familiarizați cu AppleScript, limbajul natural face destul de ușor să vă dați seama ce se întâmplă. Mai întâi, am setat o variabilă la ziua curentă. Apoi, vom trece printr-o serie de teste folosind dacă, altfel dacă și altfel pentru a ajunge la un mesaj de retur corespunzător, dat fiind ziua curentă a săptămânii.


"Altfel dacă" în acțiune.

Pe parcurs, scenariul va încerca primul dacă afirmație. Dacă se dovedește adevărat, prima declarație de întoarcere va fi rulată și scriptul se va termina (nu mai sunt făcuți pași). Cu toate acestea, dacă această declarație se dovedește falsă, prima altfel dacă este încercat, apoi al doilea și, în cele din urmă, dacă nici unul dintre acestea nu se dovedește adevărat, ultimul altfel loveste si returneaza o declaratie despre faptul ca nu este inca in weekend.

Codul Leaner este mai bun

altfel dacă structura este incredibil de puternică și vă permite să răspundeți la orice număr de scenarii diferite. Pe măsură ce codificați anumite proiecte, s-ar putea să fiți ispitiți uneori să legați împreună cinci, zece sau chiar cincisprezece altfel dacă declarații care să circule prin toate posibilitățile disponibile. Din păcate, aceasta nu este de obicei o modalitate bună de a codifica și poate duce la o tona de balon inutil.

Fiți întotdeauna atenți la utilizare altfel dacă și întrebați-vă dacă există sau nu un mod mai bun de a face ceea ce încercați să realizați. Este adesea mult mai practic și mai scurt să folosiți o buclă de un fel, dar acesta este un articol pentru o altă zi (în curând!).

Asta ori aia?

O ultima sfat rapid despre dacă declarații. O alternativă la altfel este de a utiliza sau in schimb. Iată o versiune simplificată a scriptului săptămânii folosind sau și numai două declarații posibile de returnare.

[AppleScript]
setați Weekday la ziua de (data curentă)

dacă (TheWeekDay = Sâmbătă) sau (TheWeekDay = Duminică) atunci
retur "Este weekend-ul!"
altfel
întoarce-te "Stai acolo, nu e încă weekendul!"
sfârșit dacă
[/ AppleScript]

Rămâneți aproape

Aceasta acoperă cea mai mare parte a ceea ce trebuie să știți despre condiționalități. Deschideți Open AppleScript Editor și începeți să experimentați propriile instrucțiuni condiționale. Ce scripturi se răcească cu care puteți să veniți?

Acesta este doar vârful aisbergului proverbial, în măsura în care acoperim AppleScript. Acesta este un subiect incredibil de expansiv, care are un potențial foarte mare de a-ți spori stăpânirea peste Mac, așa că vom avea mult mai multe tutoriale AppleScript excelente pentru a vă ajuta să deveniți un adevărat expert în automatizare.