EMZETT.
Login

Kurz: Scala (Martin Odersky, EPFL, 2004) verbindet objektorientierte und funktionale Programmierung auf der JVM (Java Virtual Machine), läuft aber auch als JavaScript (Scala.js) und nativ (Scala Native).

Teil des Kurses Scala

Kapitel 1 von 8 im Kurs Scala. Mit Fortschritt, Quiz und Zertifikat auf der Lernseite.

Was ist Scala?

Scala (Martin Odersky, EPFL, 2004) verbindet objektorientierte und funktionale Programmierung auf der JVM (Java Virtual Machine), läuft aber auch als JavaScript (Scala.js) und nativ (Scala Native). Der Name steht für scalable language: Sie wächst mit deinen Anforderungen von kleinen Skripten bis zu riesigen verteilten Systemen. Scala 3 (2021) hat eine aufgeräumte Syntax und stärkere Typen.

Bekannte Einsatzgebiete: Apache Spark (Big Data), Akka/Pekko (verteilte Systeme), Kafka, Backend-Dienste (Play, http4s, ZIO, Cats Effect). Twitter/X, LinkedIn und Netflix setzten stark auf Scala. Java-Bibliotheken lassen sich direkt nutzen.

Werkzeuge

  • scala-cli: das komfortabelste Werkzeug (scala-cli run Hallo.scala)
  • sbt (Build-Werkzeug), Mill
  • IDEs: IntelliJ IDEA (Scala-Plugin), VS Code mit Metals
  • Scastie (scastie.scala-lang.org): Scala im Browser
scala-cli run Hallo.scala
scala-cli test .
scala-cli repl                 # interaktive Konsole
scalac -d out Hallo.scala && scala -cp out hallo     # klassisch

Das erste Programm

Hallo.scala

@main def main(): Unit =
  println("Hallo Scala!")
  val name = "Mia"
  println(s"Hallo, $name!")                      // s-Interpolation
  println(s"2 + 3 = ${2 + 3}")
  println(f"Pi ist ungefähr ${math.Pi}%.3f")       // f-Interpolation mit Format
  print("ohne Zeilenumbruch")
  println()

Ausgabe:

Hallo Scala!
Hallo, Mia!
2 + 3 = 5
Pi ist ungefähr 3.142
ohne Zeilenumbruch
  • @main def kennzeichnet den Einstiegspunkt (Scala 3)
  • Einrückung gliedert Blöcke (wie Python); geschweifte Klammern sind optional
  • s"..." setzt Werte ein, f"..." formatiert, raw"..." lässt \ unverändert
  • Anweisungen brauchen kein Semikolon
  • Kommentare: // ..., /* ... */, Dokumentation /** ... */

val und var

@main def main(): Unit =
  val konstante = 42            // unveränderlich (bevorzugen!)
  var zaehler = 0               // veränderlich
  zaehler += 1
  val alter: Int = 17           // Typ ausdrücklich
  val (x, y) = (3, 4)           // Tupel zerlegen
  println(s"$konstante $zaehler $alter $x $y")
 
  val ergebnis = if x > 2 then "groß" else "klein"      // if ist ein Ausdruck
  println(ergebnis)
  val block =
    val a = 10
    val b = 20
    a + b                                               // letzter Ausdruck ist der Wert
  println(block)
  println((1 to 5).sum)

Ausgabe:

42 1 17 3 4
groß
30
15

Merke

  • Scala vereint OOP und funktionale Programmierung auf der JVM
  • @main def, Einrückungssyntax in Scala 3, val (unveränderlich) vor var
  • Fast alles ist ein Ausdruck (if, Blöcke)
  • Interpolation mit s"..." und f"..."
  • Werkzeuge: scala-cli, sbt, Metals, Scastie

Übungsaufgabe

Gib Name, Alter und das Geburtsjahr mit s"..." aus.

Quiz zur Selbstkontrolle

Weiter im Kurs

Weiter: Typen, Kontrollfluss und Funktionen

Alle Kapitel: Scala im Überblick