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.
Bevor Sie sich mit den Wiederholungsschleifen vertraut machen, sollten Sie sich einige unserer früheren AppleScript-Lernprogramme ansehen.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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]
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.
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:
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.
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!