Ende letzten Jahres hat Apple in seinem Swift-Blog die sogenannte Swift REPL vorgestellt. Vereinfacht ausgedrückt handelt es sich dabei um eine Art Swift-Laufzeitumgebung, die über das Terminal von OS X gesteuert und ausgeführt werden kann. Diese Laufzeitumgebung erlaubt es somit, Swift-Code direkt im Terminal auszuführen und passende Ergebnisse zu erhalten. Sie stellen damit in gewisser Weise eine Vorstufe zu den Playgrounds dar, die Apple im Zusammenspiel mit der Vorstellung von Swift und Xcode 6 auf der WWDC 2014 einführte. Wie die Swift REPL genau funktioniert und was sich damit so alles anstellen lässt, erfahren Sie in diesem Blog-Beitrag.

Alles beginnt mit „swift“!

Um die Swift REPL nutzen zu können, muss zunächst das Terminal in OS X aufgerufen und anschließend der Befehl „swift“ eingegeben werden. Daraufhin wird die Swift REPL gestartet und begrüßt uns mit einer entsprechenden Meldung:

Swift_REPL_01

Von diesem Punkt an kann nun Swift-Code direkt über das Terminal ausgeführt werden. Die Ausgabe einer sporadischen „Hallo Welt“-Meldung kann nun also direkt mithilfe von println() realisiert werden:

Swift_REPL_02

Derartige Ausgaben alleine sind ja aber nun wirklich nicht sonderlich spannend. Daher gehen wir nun einen Schritt weiter und definieren eigene Variablen und Konstanten innerhalb des Terminals, in diesem Fall zwei Integer:

Swift_REPL_03

Definierte Variablen und Konstanten stehen somit im Terminal zur Verfügung und können auf die gleiche Art und Weise wie in vollumfänglichen Swift-Projekten in Xcode genutzt werden. Es können sogar Funktionen aufgerufen und deren Ergebnisse ausgegeben werden. Im folgenden Beispiel ergänze ich dazu eine neue String-Variable und rufe anschließend die Funktion countElements auf, um die Anzahl der Zeichen dieses Strings auszugeben:

Swift_REPL_04

Hier stechen zwei der großen Pluspunkte der Swift REPL ins Auge. Einerseits ist da die direkte Ausgabe, die den eigentlichen „Reiz“ von Swift REPL ausmacht. Ohne eine ansonsten notwendige println()-Anweisung werden die Ergebnisse aller ausgeführten Befehle umgehend angezeigt; wir sehen also immer, was eine Funktion für ein Ergebnis hat.

Daneben zeigt sich auch, wie viel „Intelligenz“ in der Swift REPL steckt: Der aus dem letzten Beispiel zurückgelieferte Wert der Funktion countElements wird direkt einer automatisch neu generierten Variablen zugewiesen (schließlich habe ich mich selbst an dieser Stelle nicht um eine entsprechende Zuweisung des Ergebnisses gekümmert). Die so erzeugte Variable trägt den Bezeichner $R0. Über diesen kann ich nun auch problemlos innerhalb der Swift REPL auf den zugehörigen Wert der Variablen zugreifen und damit arbeiten:

Swift_REPL_05

In diesem Fall erzeugt die Addition der beiden Variablen $R0 und aVariable mit der Konstanten aConstant wieder eine neue Variable, die das Ergebnis dieser Operation als Wert erhält.

Funktionen

Swift REPL unterstützt aber nicht nur die Arbeit mit Variablen und Konstanten. Ganze Funktionen können damit umgesetzt und aufgerufen werden. Als Beispiel implementiere ich eine einfache Additionsfunktion, die zwei Integer-Parameter erwartet, diese addiert und das entsprechende Ergebnis zurückliefert:

Swift_REPL_06

Das Beeindruckende daran ist nicht nur die Tatsache, Funktionen direkt im Terminal umsetzen zu können. Die Swift REPL erkennt, dass hier eine Funktion implementiert wird, und rückt die Zeilen im Terminal entsprechend passend ein. Genauso wird auch der Abschluss der Funktion erkannt und damit die Zeileneinrückung wieder aufgehoben.

Eine so erstellte Funktion wie eben gezeigt kann dann problemlos innerhalb der Swift REPL auch aufgerufen werden:

Swift_REPL_07

Dabei ist auch zu sehen, dass während der gesamten Laufzeit dieser Terminal-Sitzung alle erstellten Variablen, Konstanten und Funktionen zur Verfügung stehen. So können die im ersten Schritt deklarierte Variable aVariable sowie die Konstante aConstant problemlos an die neu implementierte Funktion als Parameter übergeben werden.

Fazit

Die Swift REPL ist eine spannende Ergänzung von Apple und erlaubt das Schreiben und Ausführen von Swift-Code direkt über das Terminal. Damit ist die Swift REPL vor allen Dingen interessant, um mit der Sprache vertraut zu werden und kleinere Tests durchzuführen; dank der sofortigen und direkten Ausgabe sieht man umgehend, welches Ergebnis ein Aufruf hat. Damit erspart die Swift REPL in diesen Fällen das Anlegen eines kompletten Projekts oder Playgrounds.

Apple wird die Swift REPL auch in Zukunft noch ausbauen und hat bereits Ende Januar weitere Funktionen innerhalb des offiziellen Swift-Blogs vorgestellt. Für alle Interessierten lohnt sich also ein regelmäßiger Blick, um über die letzten Neuerungen informiert zu sein.