Om och om annat AppleScript villkorliga uttalanden

Villkorliga uttalanden är ryggraden i många programmerings- och skriptspråk. I AppleScript ger de dig möjlighet att lägga till en annan dimension av komplexitet i dina skript genom att analysera och svara på olika situationer. Denna handledning kommer att ta en närmare titt på om och om annat uttalanden och olika sätt att implementera dem i ett manus.


Dykning djupt i AppleScript

Hittills har vi lagt upp två artiklar som är perfekta för att ta dig från en komplett nybörjare till någon som kan kompetent arbeta dig runt ett grundskript:

  • Den ultimata nybörjarens guide till AppleScript
  • Avancerade AppleScript-tekniker

Dessa handledning fungerar som en översikt och ger dig en bra bild av hur AppleScript fungerar liksom vilka typer av programmeringsstrukturer som är inblandade. Om du verkligen är avsedd att bli en mästerskriptförfattare, måste du gå mycket djupare in i syntaxen och konstruktioner som utgör AppleScript.

Oroa dig inte, vi är med dig varje steg på vägen. Det här är det första i en serie artiklar som kommer att ta en lång hård titt på olika aspekter av AppleScript så att du kan utnyttja sin fantastiska kraft för att automatisera din Mac.

Tips: För att köra skript i det här inlägget måste du öppna appen "AppleScript Editor", som finns i Program> Verktyg.


Tänk om?

I AppleScript blir du svårt att hitta två tecken som rivaliserar kraften om "om". Om du lär dig att använda detta till synes enkla verktyg, går du långt.

En grundläggande om uttalande fungerar mycket som a säga blockera. Bara för en uppdatering, här är strukturen av a säga:

[Apple]
berätta ansökan "Safari"
Aktivera
slutet berätta
[/ Apple]

Som du kan se, lanserar detta skript Safari. Den har tre rader: den första och den sista innehåller berättelsen "block", som alltid måste innehålla en slutet påstående. Allt mellan dessa två linjer utgör uppbyggnaden av berättningsblocket.

Villkorliga uttalanden, liksom många andra konstruktioner, låna samma struktur, bara den här gången använder vi om istället för säga.

[Apple]
om det är sant då
--göra någonting
avsluta om
[/ Apple]

Denna struktur är ganska enkel och borde göra perfekt mening. Först startar du ditt villkorliga uttalande och du kvalificerar det med en booleskt, då skriver du dina kommandon som utlöser sannolikt, och slutligen stänger du ditt uttalande med en slutet.


Anatomi av ett villkorligt uttalande

Tips: I AppleScript Editor behöver du inte skriva ut "avsluta om", bara "avsluta". Kompilatorn lägger automatiskt till resten, även om du har flera ändsatser som hör till olika typer av block. Det talar allt för dig!


Boolie vad nu?

Innan vi går längre är det absolut nödvändigt att du förstår exakt vad jag menar när jag hänvisar till en booleska. Boolean är en datatyp som bara kan ha ett av två värden: true eller false. I datorvärlden finns absolutes absolut. Antingen är något, eller det är inte, det finns inget däremellan.

AppleScript kan enkelt räkna ut om vissa saker är sanna och använda denna kunskap för att driva ett villkorligt uttalande. För att prova det, försök att skriva ett jämställdhetsutlåtande direkt till AppleScript Editor och köra det.


"Sann" returneras

Som du kan se utvärderade kompilatören uttalandet "10> 1" och returnerade rätt "true". Om vi ​​vrider den likhetssymbolen runt och kör "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 utvärdera alla typer av olika uttalanden.

Hur Conditionals använder Booleans

Nu när du förstår vad en booleska är, är det lättare att bryta dig om hur conditionals fungerar. Som vi såg i diagrammet ovan står ett villkorligt uttalande, "om denna booleska utvärderar som sant, gör sedan något."

Låt oss se detta i praktiken med hjälp av "10> 1" -satsen som vi testat tidigare:

[Apple]
om 10> 1 då
returnera "Det är rätt!"
avsluta om
[/ Apple]

Här har vi ersatt ordet "sant" med något vi vill att AppleScript ska utvärdera. Strukturen här är exakt vad vi såg förut:


Uppdelning av ett villkorligt uttalande.

Med tanke på denna struktur, kommer kommandon inuti if-förklaringen endast att utföras om den booleska visar sig vara sann. I det här fallet är uttalandet sant, så vi får se följande i "Resultat" -delen av AppleScript Editor-fönstret.


Skriptet returnerade "Det är rätt!"

Single Line Conditionals

Om du undrar, finns det en speciell, kortfattad form av en om uttalande som endast upptar en enda rad. Det kräver inte ett "slut" och kan inte ta någon av den extra komplexiteten som vi ska titta på i nästa avsnitt, men det är användbart för enkla fall.

[Apple]
--Enkel rad om uttalande
om 10> 2 returnerar då "ja"
[/ Apple]


Annan

Om uttalanden är fantastiska, men de är lite begränsade i den form som vi hittills har sett. Till exempel, om den booleska i manuset visade sig vara falsk? Här är ett exempel:

[Apple]
Ställ x till 20

om 10> x då
returnera "10 är större än" & x
avsluta om
[/ Apple]

Som du kan se, ökar jag gradvis komplexiteten här så att du blir mer bekant med vanliga mönster och konstruktioner. I det här exemplet installerade vi först en variabel, x, sätt sedan den variabeln lika 20. Nu när vi kör vår om uttalandet jämförs talet 10 med variabeln.

I detta fall är 10 inte större än 20, så den booleska kommer att vara falsk. Det betyder att vårt skript inte kommer att göra någonting alls! För att åtgärda detta problem vänder vi oss till annan. Låt oss ändra vårt skript lite:

[Apple]
Ställ x till 20

om 10> x då
returnera "10 är större än" & x
annan
returnera "10 är inte större än" & x
avsluta om
[/ Apple]

Det fantastiska med AppleScript är att det är så mänskligt läsbart. Om du bara läser det här skriptet högt kommer du kunna berätta exakt vad det gör. Här är översikten:

  • Tilldelar ett värde av 20 till x
  • Jämförer numret 10 till x för att se om 10 är större
  • Om 10> x, returnera följande uttalande
  • Om inte (annars), returnera detta andra uttalande istället

Med tanke på att 10 inte är större än 20, kommer det andra uttalandet att returneras. Ditt resultat ska se ut så här:


Skriptet returnerade "Det är rätt!"

Nu när vi kan redogöra för två olika boolesiska scenarier, är vi mycket mer lämpade för att hantera komplexa skriptutmaningar.

Annars om

Som du kan tänka dig, det är inte tillräckligt för att redogöra för alla de olika situationer som du kommer att springa in i. Kanske har vi ett ganska komplext scenario där ett antal olika resultat är möjliga.

I detta scenario kan vi genomföra annars om att fortsätta lägga till komplexitet till vår om påstående. Tänk på följande:

[Apple]
ställa in WeekWay till veckodag för (aktuellt datum)

om (theWeekDay = fredag) då
returnera "Du är nästan fri!"
annars om (theWeekDay = lördag) då
returnera "Det är helgen!"
annars om (theWeekDay = söndag) då
återvända "Koppla av, imorgon jobbar vi."
annan
återvända "Häng in där, det är inte helgen än!"
avsluta om
[/ Apple]

Än en gång, även om du inte är bekant med AppleScript, gör det naturliga språket det ganska lätt att ta reda på vad som händer. Först ställer vi in ​​en variabel till den aktuella vardagen. Därefter kör vi igenom en serie tester med om, annars om och annan för att komma fram till ett lämpligt returmeddelande med den aktuella veckodagen.


"Annars om" i åtgärd.

Vid körning försöker manuset det första om påstående. Om det visar sig sant, kommer den första retureringen att köras och skriptet upphör att gälla (inga ytterligare åtgärder vidtas). Men om det påståendet är falskt, är det första annars om är försökt, sedan den andra och äntligen, om ingen av dem är sanna, den sista annan sparkar in och returnerar ett uttalande om att det inte är helgen ännu.

Leaner Code är bättre

De annars om strukturen är oerhört kraftfull och tillåter dig att redovisa ett antal olika scenarier. När du kodar upp vissa projekt kanske du kanske frestas ibland att kedja ihop fem, tio eller till och med femton annars om uttalanden att cykla genom alla tillgängliga möjligheter. Tyvärr är detta inte typiskt ett bra sätt att koda och kan leda till ett ton onödigt uppblåst.

Var alltid uppmärksam när du använder annars om och fråga dig själv huruvida det finns ett bättre sätt att gå om vad du försöker åstadkomma. Det är ofta mycket praktiskt och kortare att använda en slinga av något slag, men det är en artikel för en annan dag (kommer snart!).

Det här eller det där?

En sista snabb råd om om uttalanden. Ett alternativ till annan är att använda eller istället. Här är en förenklad version av veckodagskriptet med eller och bara två möjliga returer.

[Apple]
ställa in WeekWay till veckodag för (aktuellt datum)

om (theWeekDay = lördag) eller (theWeekDay = söndag) då
returnera "Det är helgen!"
annan
återvända "Häng in där, det är inte helgen än!"
avsluta om
[/ Apple]

Bo Tuned

Detta täcker det mesta av vad du behöver veta om conditionals. Kryp öppna AppleScript Editor och börja experimentera med dina egna villkorliga uttalanden. Vilka coola skript kan du komma med?

Detta är bara toppen av det ordspråkiga isberget för vår täckning av AppleScript. Detta är ett oerhört expansivt ämne som har stor potential att öka din förmåga över din Mac, så vi ska ha mycket mer bra AppleScript-handledning för att hjälpa dig att bli en sann automationsexpert.