Getting Started mit AppleScript (Lektion VII - Working with Sub-Routines)
Posted by: fidel in AppleScript, How to, _deutsch, mac, tags: applescript, getting started, howto, lektion 7, return, subroutine, subroutinesHeute will ich den Umgang mit Sub-Routinen in AppleScript erläutern.
Im Kern war der AppleScript Code in den bisherigen Beiträgen immer von oben nach unten zu lesen, lief also ganz simpel der Zeilen-Reihenfolge nach ab. Dies wird sich nun ändern.
Im Kern sind Sub-Routionen in AppleScript ausgelagerte Funktionen auf die man jeweils mit einem simpeln Funktionsaufruf zugreift und dann jeweils nach Ablauf der Funktion zurück zum Aufrufort springt von wo das Script dann wieder nach dem alten Prinzip weiterabläuft.
Vorteile von Sub-Routinen:
Je länger der Code wird umso schwerer ist er im Regelfall auch zu verstehen (geht bei eigenem Code noch relativ gut bei ausreichender anzahl an Kommentaren -> ist bei Fremd-Code aber oft einfach ein Problem). Mittels Sub-Routinen lagert man Teilfunktionalität aus und hat so kleinere einzelne Bereiche.
Dies macht vor allem dann Sinn wenn man einen Code-Schnippel regelmäßiger innerhalb seinem AppleScript-Programm verwenden will.
Aber nun zur Umsetzung …
Einführung:
Fangen wir also mit einem Minimal-Beispiel an. Das folgende Script macht folgendes:
Es zeigt einen Dialog an der uns sagt, dass wir im Hauptprogramm teil sind, ruft dann unsere weiter unten definierte Funktion / Sub-Routine mySubRoutine auf, und springt zurück zum Programmablauf wo abschließend ein erneuter Dialog uns mitteilt dass wir wieder ausserhalb der SubRoutine sind. Klingt einfach -> ist einfach =)

Ok, nun mal die Minimal Sub-Routine im Detail. Die SubRoutine wird wie folgt definiert:
Und wie folgt aufgerufen:
Diese Minimal-Funktion ist stark limitiert. Weder geben wir aktuell beim Funktionsaufruf Werte mit an die Sub-Routine, noch gibt die Sub-Routine selber Werte zurück ans Hauptprogramm. Dies werden wir später ausbauen, keine Sorge.
Zu beachten ist noch folgendes:
Erfolgt der Funktions- / SubRoutine-Aufruf innerhalb eines Tell-Blockes (den ich bis dato leider noch nicht erklärt habe, kommt aber noch irgendwann hehe) gilt dies als Sonderfall.
Trifft dies zu müsste man die SubRoutine mySubRoutine nicht so aufrufen:
mySubRoutine()
sondern:
my mySubRoutine()
Dies hat nichts mit unserem Funktions Namen zu tun, sondern gilt für jeglichen Funktionsnamen (sofern diese eben innerhalb eines Tell-Blockes aufgerufen wird)
Ok, das wichtigste ist erklärt, also weiter im Konzept.
SubRoutine mit übergebener Variable:
Nun variieren wir obiges Beispiel und definieren eine Variable myTestVar mit einem beliebigen Text. Anschliessend rufen wir wieder unsere SubRoutine auf, übergeben jedoch beim Aufruf die Variable myTestVar mit an die Funktion. Innerhalb der SubRoutine geben wir diese übergebene Variable dann mit einem Dialog aus und kehren zurück zum normalen Programmablauf.
SubRoutine mit Rückgabe-Wert
Nun minimieren wir obiges Beispiel wieder um die Test-Beispiele auch klein zu halten. Dafür soll unser Code nun eine SubRoutine aufrufen welche einen Rückgabewert hat. Ein Blick auf den Code:
Der interessante Part ist hier klar … der Aufruf der SubRoutine und das Ergebnis.
Wir verwenden display dialog um einen Dialog zu erzeugen und rufen innerhalb dieser Zeile dann unsere SubRoutine auf. Da die SubRoutine mittels return einen Wert zurückgibt haben wir für den display dialog einen anzuzeigenden Inhalt. Der Rest sollte selbsterklärend sein, wenn nicht einfach nachfragen.
Das wars dann erstmal wieder von mir, ich hoffe Lektion 7 war hilfreich.
Similar Posts:
















Entries (RSS)