Hvis og hvis annet AppleScript betingede uttalelser

Betingede utsagn er ryggraden i mange programmerings- og skriptspråk. I AppleScript gir de deg en måte å legge til en annen dimensjon av kompleksitet i skriptene dine ved å analysere og svare på ulike situasjoner. Denne opplæringen vil ta en nærmere titt på hvis og om ikke annet uttalelser og de ulike måtene å implementere dem i et skript.


Dykke dypt inn i AppleScript

Så langt har vi lagt ut to artikler som er perfekte for å ta deg fra en komplett nybegynner til noen som kan kompetent jobbe deg rundt et grunnleggende skript:

  • Den Ultimate Beginner's Guide To AppleScript
  • Avanserte AppleScript-teknikker

Disse veiledningene fungerer som en oversikt og gir deg en god ide om hvordan AppleScript fungerer, samt hvilke typer programmeringsstrukturer som er involvert. Hvis du virkelig er interessert i å bli en masterskriptforfatter, må du imidlertid gå mye dypere inn i syntaksen og konstruksjonene som utgjør AppleScript.

Ikke bekymre deg, vi er med deg hvert skritt av veien. Dette er den første i en serie artikler som skal ta en lang titt på forskjellige aspekter av AppleScript, slik at du kan utnytte sin fantastiske kraft for å automatisere Mac.

Tips: Hvis du vil kjøre skriptene i dette innlegget, må du åpne appen "AppleScript Editor", som du finner i Programmer> Verktøy.


Hva om?

I AppleScript blir du hardt presset for å finne to tegn som konkurrerer med kraften til "hvis". Hvis du lærer å bruke dette tilsynelatende enkle verktøyet, går du langt.

En grunnleggende hvis uttalelse virker mye som a fortelle blokkere. Bare for en oppfriskning, her er strukturen av a fortelle:

[Apple]
fortell søknad "Safari"
aktivere
slutt tell
[/ Apple]

Som du kan se, lanserer dette skriptet Safari. Den har tre linjer: den første og siste består av fortellingsblokken, som alltid må inneholde en slutt uttalelse. Alt mellom disse to linjene utgjør legemet av fortellingsblokken.

Betingede utsagn, så vel som mange andre konstruksjoner, låner samme struktur, bare denne gangen bruker vi hvis i stedet for fortelle.

[Apple]
hvis sant da
--gjør noe
slutt om
[/ Apple]

Denne strukturen er ganske enkel og bør gi perfekt mening. Først begynner du ditt betingede utsagn, og du kvalifiserer det med en boolesk, så skriver du dine kommandoer som utløser i tilfelle en sannhet, og til slutt lukker du uttalelsen med en slutt.


Anatomi av en betinget erklæring

Tips: I AppleScript Editor trenger du ikke å skrive ut "slutt hvis", bare "slutt". Kompilatoren vil automatisk legge til resten, selv om du har flere endestatuser som tilhører ulike typer blokker. Det viser alt for deg!


Boolie Hva nå?

Før vi går videre, er det helt kritisk at du forstår akkurat hva jeg mener når jeg henviser til en boolsk. Boolsk er en datatype som bare kan ha en av to verdier: true eller false. I verden av databehandling eksisterer absolutt absolutt. Enten er noe, eller det er ikke, det er ingen mellom.

AppleScript kan enkelt finne ut om visse ting er sanne og bruke denne kunnskapen til å drive en betinget uttalelse. For å prøve det, kan du prøve å skrive inn en likestillingserklæring rett inn i AppleScript Editor og kjøre den.


"True" returneres

Som du kan se, evaluerte evaluatoren setningen "10> 1" og returnerte riktig "true". Hvis vi flip det likestillingssymbolet rundt og løp "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 kan evaluere alle slags forskjellige setninger.

Hvordan conditionals bruker boolesker

Nå som du forstår hva en boolsk er, er det lettere å vikle deg rundt hvordan conditionals fungerer. Som vi så i diagrammet ovenfor, sier et betinget utsagn, "hvis denne boolske vurderer som sant, så gjør noe."

La oss se dette i praksis ved å bruke "10> 1" -klæringen som vi testet tidligere:

[Apple]
hvis 10> 1 da
returnere "Det stemmer!"
slutt om
[/ Apple]

Her har vi erstattet ordet "sant" med noe vi vil at AppleScript skal evaluere. Strukturen her er akkurat det vi så før:


Fordeling av en betinget erklæring.

Gitt denne strukturen, vil kommandoene innsiden av if-setningen bare utføres dersom boolesken viser seg å være sann. I dette tilfellet er setningen sant, så vi ser følgende i "Resultat" -delen av AppleScript Editor-vinduet.


Skriptet returnerte "Det stemmer!"

Enkeltlinjebetingelser

I tilfelle du lurer på, er det en spesiell, kortfattet form av en hvis uttalelse som bare inntar en enkelt linje. Det krever ikke en "slutt" og kan ikke ta noen av de ekstra kompleksitetene som vi skal se på i neste avsnitt, men det er nyttig for enkle tilfeller.

[Apple]
--Enkeltlinje hvis setningen er angitt
hvis 10> 2 så returner "ja"
[/ Apple]


Ellers

Hvis uttalelser er kjempebra, men de er litt begrenset i det skjemaet vi har sett hittil. For eksempel, hva om den boolske i skriptet viste seg å være falsk? Her er et eksempel:

[Apple]
sett x til 20

hvis 10> x da
returnere "10 er større enn" & x
slutt om
[/ Apple]

Som du kan se, øker jeg gradvis kompleksiteten her slik at du blir mer kjent med vanlige mønstre og konstruksjoner. I dette eksemplet oppretter vi først en variabel, x, sett deretter den variabelen like 20. Nå når vi kjører vår hvis setning, tallet 10 er sammenlignet med variabelen.

I dette tilfellet er 10 ikke større enn 20, så den boolske vil være falsk. Dette betyr at vårt skript ikke vil gjøre noe i det hele tatt! For å fikse dette problemet vender vi til ellers. La oss endre vårt skript litt:

[Apple]
sett x til 20

hvis 10> x da
returnere "10 er større enn" & x
ellers
returnere "10 er ikke større enn" & x
slutt om
[/ Apple]

Den gode tingen om AppleScript er at den er så menneskelig lesbar. Hvis du bare leser dette skriptet høyt, vil du kunne fortelle nøyaktig hva det gjør. Her er nedslaget:

  • Tilordner en verdi på 20 til x
  • Sammenligner tallet 10 til x for å se om 10 er større
  • Hvis 10> x, returner følgende erklæring
  • Hvis ikke (ellers), returner du denne andre setningen i stedet

Gitt at 10 ikke er større enn 20, vil den andre utsagnet bli returnert. Resultatet ditt bør se slik ut:


Skriptet returnerte "Det stemmer!"

Nå som vi kan redegjøre for to forskjellige boolske scenarier, er vi mye bedre egnet til å takle komplekse skriptutfordringer.

Eller hvis

Som du kan forestille deg, er dette ikke nok til å regne for alle de forskjellige situasjonene du kommer til å løpe inn i. Kanskje vi har et ganske komplisert scenario der hvor en rekke forskjellige utfall er mulig.

I dette scenariet kan vi implementere eller hvis å fortsette å legge kompleksitet til vår hvis uttalelse. Vurder følgende:

[Apple]
sett theWeekDay til ukedag for (nåværende dato)

hvis (theWeekDay = fredag) da
returnere "Du er nesten fri!"
ellers hvis (theWeekDay = Saturday) da
returnere "Det er helgen!"
Ellers hvis (theWeekDay = Søndag) da
returnere "Slapp av, for i morgen jobber vi."
ellers
returnere "Hang deg der, det er ikke helgen ennå!"
slutt om
[/ Apple]

Igjen, selv om du ikke er kjent med AppleScript, gjør det naturlige språket det ganske enkelt å finne ut hva som skjer. Først setter vi en variabel til gjeldende hverdag. Deretter løper vi gjennom en serie tester med hvis, eller hvis og ellers for å komme frem til en passende returmelding gitt dagens dag i uken.


"Else hvis" i aksjon.

Ved kjøring vil skriptet prøve den første hvis uttalelse. Hvis det viser seg sant, vil den første returoppgaven bli kjørt, og skriptet avsluttes (ingen ytterligere skritt blir tatt). Men hvis denne utsagnet viser seg falsk, er den første eller hvis er prøvd, så den andre og til slutt, hvis ingen av dem er sanne, den siste ellers sparker inn og returnerer en erklæring om at det ikke er helgen ennå.

Leaner Code er bedre

De eller hvis strukturen er utrolig kraftig og lar deg regne for et antall forskjellige scenarier. Når du kodes opp bestemte prosjekter, kan du til tider fristes til å koble sammen fem, ti eller femten eller hvis uttalelser for å sykle gjennom alle tilgjengelige muligheter. Dessverre er dette ikke typisk en god måte å kode og kan føre til massevis av unødvendig oppblåsthet.

Vær alltid oppmerksom når du bruker eller hvis og spør deg selv om det ikke er en bedre måte å gå om hva du prøver å oppnå. Det er ofte langt mer praktisk og kort å bruke en løkke av noe slag, men det er en artikkel for en annen dag (kommer snart!).

Dette eller det?

Et siste raskt stykke råd om hvis uttalelser. Et alternativ til ellers er å bruke eller i stedet. Her er en forenklet versjon av ukedagskriptet med eller og bare to mulige returopplysninger.

[Apple]
sett theWeekDay til ukedag for (nåværende dato)

hvis (theWeekDay = Saturday) eller (theWeekDay = Søndag) da
returnere "Det er helgen!"
ellers
returnere "Hang deg der, det er ikke helgen ennå!"
slutt om
[/ Apple]

Følg med

Dette dekker det meste av det du trenger å vite om tilstandsbetingelser. Sprekk åpne AppleScript Editor og start å eksperimentere med dine egne betingede utsagn. Hvilke kule skript kan du komme med?

Dette er bare toppen av det berømte isberget så langt som vår dekning av AppleScript. Dette er et utrolig ekspansivt emne som har mye potensial for å øke beherskelsen din over din Mac, så vi skal ha mange flere gode AppleScript-veiledninger for å hjelpe deg å bli en sann automatiseringsekspert.