Stufe 1Einstieg · Lektion 4 von 34
Der Scala-Interpreter und Scala-Skripte
Die REPL ist die interaktive Konsole von Scala: Sie tippen einen Ausdruck ein und sehen sofort Ergebnis und Typ. Zusammen mit Skriptdateien ist sie das schnellste Werkzeug, um Scala kennenzulernen und kleine Aufgaben zu erledigen.
REPL heißt Read, Eval, Print, Loop
Streng genommen ist die REPL kein Interpreter: Jede Eingabe wird im Hintergrund kompiliert und dann ausgeführt. Für Sie fühlt es sich trotzdem an wie ein Interpreter. Gestartet wird sie mit dem Befehl scala ohne weitere Argumente:
scala> 6 * 7
val res0: Int = 42
scala> val name = "Scala"
val name: String = Scala
scala> name.toUpperCase.reverse
val res1: String = ALACSErgebnisse ohne eigenen Namen landen in automatisch benannten Werten res0, res1 und so weiter, die Sie weiterverwenden können: res0 + 1 ergibt 43.
Mehrzeilige Eingaben
Endet eine Zeile so, dass der Ausdruck offensichtlich weitergeht, wartet die REPL auf die nächste Zeile. Das gilt zum Beispiel nach einem = oder einer offenen Klammer:
scala> def quadrat(x: Int): Int =
| x * x
def quadrat(x: Int): Int
scala> quadrat(12)
val res2: Int = 144Nützliche Befehle
Befehle der REPL beginnen mit einem Doppelpunkt. Die wichtigsten:
| Befehl | Wirkung |
|---|---|
:type ausdruck | zeigt nur den Typ, ohne den Ausdruck auszuwerten |
:doc name | zeigt die Dokumentation, soweit vorhanden |
:imports | listet die aktiven Importe |
:load datei.scala | liest eine Datei ein, als wäre sie getippt worden |
:reset | vergisst alle bisherigen Definitionen |
:help | Übersicht aller Befehle |
:quit | beendet die REPL (auch Strg+D) |
Mit der Tabulatortaste vervollständigt die REPL Namen: Tippen Sie "text".to und drücken Sie Tab, erscheinen alle Methoden, die mit to beginnen.
Bibliotheken in der REPL
Der scala-Befehl kann Abhängigkeiten direkt laden. So starten Sie eine REPL mit einer JSON-Bibliothek:
$ scala repl --dep com.lihaoyi::upickle:4.1.0Die Schreibweise gruppe::name:version mit zwei Doppelpunkten bedeutet: „die zur Scala-Version passende Variante der Bibliothek“. Die Versionsnummer übernehmen Sie am besten aus der Dokumentation der Bibliothek.
Scala-Skripte
Für kleine Automatisierungen braucht es kein Projekt. Eine Datei mit der Endung .sc ist ein Skript: Die Anweisungen darin werden von oben nach unten ausgeführt, ohne @main.
//> using scala 3.9.0
val ordner = os.pwd
val scalaDateien = os.list(ordner).filter(_.ext == "scala")
println(s"${scalaDateien.size} Scala-Dateien in $ordner")
scalaDateien.foreach(p => println(" - " + p.last))Moment – woher kommt os? Das ist die Bibliothek os-lib, die Sie mit einer weiteren Direktive einbinden:
//> using scala 3.9.0
//> using dep com.lihaoyi::os-lib:0.11.4Zeilen, die mit //> using beginnen, sind Direktiven für Scala CLI. Für den Compiler sind es Kommentare; das Werkzeug liest daraus Scala-Version, Abhängigkeiten und Compiler-Optionen. Gestartet wird das Skript wie jede andere Datei mit scala run dateien.sc.
Worksheets im Editor
Metals (VS Code) und IntelliJ bieten zusätzlich Worksheets: Dateien mit der Endung .worksheet.sc, bei denen das Ergebnis jeder Zeile direkt daneben erscheint, sobald Sie speichern. Das ist die komfortabelste Art, Beispiele aus diesem Lehrgang durchzuspielen.