Sparen Sie Zeit und Aufwand mit AppleScript-Wiederholungsschleifen

In unserer fortlaufenden Serie von AppleScript-Artikeln werden wir heute über die Leistungsfähigkeit von Wiederholungsschleifen lernen. Durch die Automatisierung von sich wiederholenden Aufgaben und Befehlsgruppen können Sie mühsame Arbeit sparen. Nachdem Sie sich mit der Verwendung von Wiederholungen vertraut gemacht haben, können Sie den Arbeitsaufwand für die Automatisierung von Aufgaben erheblich reduzieren. Dies führt zu einer schnelleren, einfacheren Codierung und einer höheren Produktivität.


Weitere großartige AppleScript-Tutorials

Bevor Sie sich mit den Wiederholungsschleifen vertraut machen, sollten Sie sich einige unserer früheren AppleScript-Lernprogramme ansehen.

  • Das ultimative Einsteigerhandbuch für AppleScript
  • Fortgeschrittene AppleScript-Techniken
  • If und If Else: AppleScript-Bedingungsanweisungen
  • Starten Sie Ihre Lieblings-Apps in Gruppen mit AppleScript

Wiederholen Sie die klingende Freude

Wenn Sie es beim ersten Mal richtig gemacht haben, reicht das nicht einmal aus?

Wenn Sie zuvor schon einmal programmiert oder Skripting durchgeführt haben, wissen Sie, dass Schleifen absolut unerlässlich sind, um nahezu alle wichtigen Errungenschaften zu erreichen. Wenn Sie sich jedoch mit der Idee des Programmierens noch nicht auskennen, fragen Sie sich vielleicht, warum Sie jemals etwas wiederholen möchten. Wenn Sie es beim ersten Mal richtig gemacht haben, reicht das nicht einmal aus?

Die Antwort liegt natürlich darin, dass wir häufig mit riesigen Datenmengen arbeiten. Wenn Sie fünfhundert Bilder in einem Ordner haben und mit jedem von ihnen etwas tun möchten, können Sie entweder den gleichen Befehl fünfhundert Mal eingeben und ihn jedes Mal auf eine andere Datei ausrichten oder eine Wiederholungsschleife verwenden und Ihren Befehl speichern geistige Gesundheit.


Die Struktur einer Wiederholungsschleife

Wenn Sie meinen vorherigen Artikel zu Bedingungsanweisungen lesen, sollte die Struktur einer Wiederholungsschleife bekannt sein. Wie bei vielen anderen AppleScript-Konstrukten bildet die Wiederholungsschleife einen Codeblock mit Anfang und Ende.

[apfelschrift]
3 mal wiederholen
--zu wiederholende Befehle
ende wiederholen
[/ applescript]

Wie Sie sehen, beginnt die erste Zeile mit "repeat" und umreißt dann die Bedingungen der Wiederholung. Im mittleren Bereich werden alle verschiedenen zu wiederholenden Befehle platziert, und die letzte Zeile informiert den Compiler darüber, dass hier die Schleife endet.


Die Struktur einer Wiederholungsschleife.

Das obige Codebeispiel ist dank der hohen Lesbarkeit von AppleScript recht unkompliziert. Alles innerhalb dieses Wiederholungsblocks wird dreimal wiederholt. Dann wird das Skript fortgesetzt (es sei denn, es wird eine Beendigungsaktion in der Wiederholung ausgeführt)..

Eine Sache, die Sie im Hinterkopf behalten möchten, ist, dass Ihr Code so geschrieben werden muss, dass die Wiederholung tatsächlich etwas Nützliches bedeutet. Es ist oft der Fall, dass ein bestimmter Codeabschnitt derselbe ist, unabhängig davon, ob Sie ihn einmal oder tausendmal ausführen. Sie müssen es so gestalten, dass die Wiederholung einen Fortschritt bewirkt. Wir werden sehen, wie das geht, wenn wir mehr über die verschiedenen verfügbaren Wiederholungsarten erfahren.


Arten von Wiederholungsschleifen

In einem vorangegangenen Artikel haben wir darüber gesprochen, wie Sie Ihre Einstellungen ändern können ob Aussagen durch unterschiedliche Kombinationen von ansonsten und sonst wenn. Wiederholungsschleifen können eine noch höhere Variation erzielen, da es in AppleScript viele verschiedene Arten von Wiederholungsschleifen gibt. Lass uns jedes einmal durchgehen und wie es funktioniert.

Eine Endlosschleife

Die erste Art der Wiederholung ist eine Endlosschleife. Dies geschieht, wenn wir einfach einen Wiederholungsblock ohne Modifikatoren verwenden.

[apfelschrift]
Setze x auf "Monotonie"
wiederholen
Anzeigedialog x
ende wiederholen
[/ applescript]

Wenn Sie dieses Skript ausführen, wird es für immer ausgeführt und jedes Mal ein Dialogfeld angezeigt, wenn es ausgeführt wird. Es gibt sehr wenige praktische Anwendungsfälle, in denen Sie eine unendliche Wiederholung wünschen. Stellen Sie daher in der Regel sicher, dass Sie der Wiederholungsanweisung, die die Dauer oder die Anzahl der Wiederholungen festlegt, immer zusätzlichen Code hinzufügen.

Wiederholen Sie eine bestimmte Anzahl von Malen

Die nächste Wiederholungsart wurde in unserem ersten Codebeispiel oben gezeigt. Hier geben wir ausdrücklich an, wie oft ein Codeblock wiederholt werden soll. Hier ist ein Beispiel:

[apfelschrift]
2 mal wiederholen
Anzeigedialog "Hallo dort!"
ende wiederholen
[/ applescript]

In diesem Code rufen wir ein Dialogfeld mit einer einfachen Nachricht auf. Der Wiederholungsblock wird so eingestellt, dass er dies zweimal ausführt. Sobald der Benutzer auf eine der Schaltflächen im ersten Dialogfeld klickt, wird an seiner Stelle eine andere Schaltfläche angezeigt.


Dasselbe Fenster wird zweimal angezeigt.

Wie ich bereits erwähnt habe, ist es oft nicht hilfreich, dasselbe genau zweimal zu wiederholen. Stattdessen müssen wir herausfinden, wie die Ausgabe variiert werden kann. Mal sehen, ob wir den Wiederholungsblock zweimal ausführen lassen können, aber jedes Mal eine andere Nachricht anzeigen.

[apfelschrift]
Setzen Sie theMessages auf "Hallo dort!", "Lernen wir etwas über AppleScript!"
setze x auf 1

2 mal wiederholen
Anzeigedialog (Element x der Nachrichten)
setze x auf (x + 1)
ende wiederholen
[/ applescript]

Dies mag ein wenig verwirrend erscheinen, aber keine Sorge, es ist wirklich einfach. Wir beginnen mit der Deklaration einer Liste. Mit einer Liste können Sie mehrere Daten in eine einzige Variable zusammenfassen. Hier haben wir zwei verschiedene Saiten genommen und in "theMessages" geworfen. Wir können auf jedes Listenelement über seine Nummer zugreifen. Also "Hallo dort!" ist "Punkt 1 der Nachrichten"und" Erfahren Sie mehr über AppleScript! "ist"Punkt 2 der Nachrichten".

Als nächstes nutzen wir ein äußerst wichtiges Konstrukt: einen Zähler. Dies ist das Geheimnis, wenn eine Wiederholung jedes Mal etwas anderes ausführen soll. Für dieses Beispiel setzen wir x gleich 1, dann inkrementiert x am Ende der Wiederholung. Auf diese Weise wird bei jeder Wiederholung der Wert von x steigt um eins.

Die Auswirkungen auf unseren Code sind tiefgreifend. Beim ersten Mal läuft die Wiederholung ab, x ist gleich 1, daher wird auf Punkt 1 unserer Liste zugegriffen und unsere erste Nachricht wird im Dialogfeld angezeigt. Dann ist der Wert von x auf zwei erhöht, wodurch die zweite Meldung beim zweiten Mal durch die Wiederholung angezeigt wird.


Diesmal werden zwei verschiedene Meldungen angezeigt.

Spitze: Beachten Sie, dass wir in einer bestimmten Wiederholung eine Ziffer (2) verwenden müssen. Wenn Sie also etwas "zweimal" wiederholen, funktioniert die Schreibweise nicht.

Wiederholen Sie mit dem Nummernbereich

Wenn Sie über eine inkrementierende Variable etwas durchgehen möchten, gibt es einen knapperen Weg, als dies in unserem vorherigen Beispiel beschrieben wurde. Verwendung der wiederhole mit konstruieren wir einen Zähler, der direkt in unsere Schleife eingebaut ist und auf den Code innerhalb zugreifen kann. Sehen wir uns an, wie das aussieht, indem wir das vorherige Codebeispiel optimieren:

[apfelschrift]
Setzen Sie theMessages auf "Hallo dort!", "Wie geht es Ihnen?", "Lass uns etwas über AppleScript lernen!"

Wiederholen Sie mit n von 1 bis 3
Anzeigedialog (Element n der Nachrichten)
ende wiederholen
[/ applescript]

Wie Sie sehen, haben wir diesmal drei Nachrichten, die Sie durchlaufen müssen. Beachten Sie, dass unser Code tatsächlich vereinfacht wurde. Wir haben die Erstellung und das Inkrementieren einer Variablen entfernt und stattdessen den Wiederholungsblock dazu aufgefordert, "mit n von 1 bis 3 zu wiederholen"..

Was dies tut, ist das Erstellen einer Variablen n, Erhöhen Sie ihn dann bei jeder Wiederholung des Blocks um eins. Start- und Zielnummer werden durch den Teil "von 1 bis 3" bestimmt. Das erste Mal wird dies ausgeführt, n wird 1, dann 2 beim nächsten Mal und schließlich 3 beim letzten Mal.

Schneller und einfacher Zugriff auf die Zählvariable macht wiederhole mit eine äußerst nützliche Wiederholungsstruktur. Sie werden feststellen, dass Sie dies häufig verwenden.

Wiederholen Sie mit Liste

Es gibt eine andere Form von wiederhole mit Block, der die Zahlen eingraviert und stattdessen speziell strukturiert ist, um die Elemente in einer Liste zu durchlaufen. Dies ist genau das, was wir zu erreichen versucht haben, also ist dies perfekt für unser Beispiel. Hier ist unser Wiederholungsblock, noch einmal vereinfacht.

[apfelschrift]
Setzen Sie theMessages auf "Hallo dort!", "Wie geht es Ihnen?", "Lass uns etwas über AppleScript lernen!"

Wiederholen Sie die Nachricht in theMessages
Dialogmeldung anzeigen
ende wiederholen
[/ applescript]

Diesmal weisen wir AppleScript an, den Codeblock mit der Option zu wiederholen Botschaft Variable in der Liste Die Nachrichten. Dies bedeutet, dass der Codeblock für jeden Eintrag in unserer Liste einmal ausgeführt wird. In diesem Fall läuft es also dreimal. Bei jeder Ausführung wird der Inhalt des aktuellen Listenelements in unser Verzeichnis eingefügt Botschaft Variable, auf die wir später in unserem Anzeigedialogbefehl zugreifen.

Wiederholen Sie während

Die nächste Wiederholungsschleife, die Sie in Ihrem Code nutzen können, ist während wiederholen. Dieses ist leicht zu verstehen, aber immer noch super mächtig. Im Grunde erlaubt es Ihnen, einen bestimmten Codeblock während eines bestimmten Codes zu wiederholen boolean ist wahr. Hier ist ein einfaches Beispiel, das nicht viel macht, aber den Punkt veranschaulicht:

[apfelschrift]
setze x auf wahr
setze y auf 0

wiederhole x
wenn y> 10 ist
setze x auf false
sonst
setze y auf y + 1
ende wenn
ende wiederholen
[/ applescript]

In diesem Skript wird sich der Codeblock unendlich lange wiederholen x ist wahr. Innerhalb der Wiederholung setzen wir jedoch x Falsch wenn y ist größer als 10 und erhöht es sonst. Dies bedeutet, dass sich der Code nur noch ein paar Mal wiederholen kann, da dies letztendlich der Fall ist y wird auf 10 kommen und dann wird die Wiederholung aufhören.

Beachten Sie, dass ich auch diese Struktur hätte verwenden können:

[apfelschrift]
wiederhole, solange x wahr ist
--Code zu wiederholen
ende wiederholen
[/ applescript]

Dieser Code funktioniert einwandfrei, aber das "ist wahr" ist nicht notwendig. Der Grund dafür liegt im Kern dessen, was ein Boolean ist und was er tut. Die Variable x in unserem Beispiel gleich wahr, die zwei sind ein und dasselbe.

Wenn Sie dies nun auf den Kopf stellen möchten, können Sie etwas wiederholen, bis Ihr Boolean wahr wird. Das funktioniert so:

[apfelschrift]
wiederholen Sie, während x falsch ist
--Code zu wiederholen
ende wiederholen
[/ applescript]

Das alles wirkt ein wenig abstrakt, also lassen Sie uns mit a etwas interessantes machen während wiederholen Schleife. Wir werden ein einfaches Zahlenraten-Spiel erstellen. Zuerst setzen wir die Antwortvariable auf eine Zufallszahl und unsere Schätzungsvariable auf 0. Als Nächstes erstellen wir eine während wiederholen Eine Schleife, die so lange weiterläuft, wie die Vermutung des Benutzers nicht der zufällig ausgewählten Antwort entspricht.

In der Wiederholung zeigen wir ein Dialogfeld an und setzen die zurückgegebene Zahl auf die erratene Variable. Dieses Eingabefenster für die Schätzung bleibt bestehen, bis die Vermutung richtig ist.

[apfelschrift]
Antwort auf Zufallszahl von 1 bis 5 einstellen
Schätzung auf 0 setzen
wiederholen, während die Vermutung der Antwort nicht gleich ist
setze den Text auf den zurückgesendeten Text (Anzeigedialog "Erneut raten! Wählen Sie eine Zahl zwischen 1 und 5" Standardantwort "1") als Zahl
ende wiederholen
Anzeigedialog "Das ist richtig!" & Antwort & "ist die Antwort!"
[/ applescript]


In diesem Fenster kann der Benutzer eine Zahl erraten und wird wiederholt, bis die Vermutung richtig ist.

Wiederhole bis

Der Code "Wiederholen, während die Vermutung nicht gleich der Antwort ist" ist nicht sehr leicht zu lesen. Das Negative (nicht gleich) macht es verwirrend. Wir können dies ein wenig vereinfachen, wenn wir das aufgeben während wiederholen Schleife und stattdessen auf eine wiederhole bis Schleife. Hier ist die Zahl, die das Vermutungsspiel umgeschrieben hat:

[apfelschrift]
Antwort auf Zufallszahl von 1 bis 5 einstellen
Schätzung auf 0 setzen

wiederholen bis (raten = antworten)
setze den Text auf den zurückgesendeten Text (Anzeigedialog "Erneut raten! Wählen Sie eine Zahl zwischen 1 und 5" Standardantwort "1") als Zahl
ende wiederholen

Anzeigedialog "Das ist richtig!" & Antwort & "ist die Antwort!"
[/ applescript]

Wie Sie sehen, ist diese Wiederholung viel prägnanter und leicht lesbar. Denken Sie daran, dass dies nicht immer der Fall sein wird, manchmal eine während wiederholen wird derjenige sein, der Code speichert.

Jetzt alle zusammen

Wütend! Es gibt schrecklich viele verschiedene Wiederholungsschleifen, nicht wahr? Wenn du dich überwältigt fühlst, sei nicht so. Sie sind alle ziemlich einfach und Sie wären überrascht, wie oft die richtige Formulierung das erste ist, was Ihnen in den Kopf fällt. Um Sie auf dem Laufenden zu halten, finden Sie hier eine kurze Liste verschiedener Wiederholungsbeispiele:

  • 5 mal wiederholen
  • wiederholen n mal
  • wiederhole mit n von 1 bis 5
  • wiederhole mit Listenpunkt im Die Liste
  • während wiederholen x
  • während wiederholen y ist wahr
  • während wiederholen x ist falsch
  • wiederhole bis y
  • wiederhole bis (x > y)

Wenn Sie eine Wiederholungsschleife schreiben, sollten Sie immer einige andere Strukturen im Kopf durchlaufen, um zu sehen, ob Sie sie kürzer und prägnanter gestalten können. Wie wir oben gesehen haben, können Sie Ihren Code wirklich verbessern, indem Sie offen für die Verwendung verschiedener Konstrukte bleiben.

Bleiben Sie auf dem Laufenden

Sie sollten jetzt ein Experte für AppleScript-Wiederholungsschleifen sein. Indem Sie diese in Verbindung mit verwenden ob Aussagen, von denen wir zuvor gelernt haben, können Sie einige unglaublich komplexe und nützliche Skripte erstellen.

In unserem nächsten AppleScript-Artikel wird tatsächlich eine Pause von der Theorie genommen und ein Teil dieses Wissens in einem praktischen Skript verwendet, das Sie sofort auf Ihrem System implementieren können. Schau bald wieder vorbei!