EMZETT.
Login

Kurz: > Achtung: Scala-Programme brauchen genaue Einrückung bei der Indentation-Syntax; mische Tabs und Leerzeichen nicht.

Teil des Kurses Scala

Kapitel 8 von 8 im Kurs Scala (Abschnitt „Nachschlagen“). Mit Fortschritt, Quiz und Zertifikat auf der Lernseite.

Syntax-Übersicht

KonzeptScala 3
Konstanteval x = 1
Variablevar y = 2
Funktiondef f(a: Int): Int = a + 1
Lambdax => x * 2 oder _ * 2
Klasseclass A(val n: Int)
Datenklassecase class P(x: Int)
Traittrait T: ...
Enumenum E: case A, B
Bedingungif c then a else b
Schleifefor i <- 1 to 3 do ...
Matchx match case 1 => ...
OptionSome(1), None
Interpolations"$x", f"$x%.2f"
Typklassegiven / using

Wichtige Collection-Methoden

@main def main(): Unit =
  val l = List(3, 1, 2)
  val tabelle = List(
    "map" -> l.map(_ + 1),
    "filter" -> l.filter(_ > 1),
    "sorted" -> l.sorted,
    "foldLeft" -> l.foldLeft(0)(_ + _),
    "zip" -> l.zip(List("a", "b", "c")),
    "groupBy" -> l.groupBy(_ % 2).toList.sortBy(_._1),
    "flatMap" -> l.flatMap(x => List(x, x)),
    "take/drop" -> (l.take(2), l.drop(2)),
  )
  tabelle.foreach((n, w) => println(s"$n: $w"))

Ausgabe:

map: List(4, 2, 3)
filter: List(3, 2)
sorted: List(1, 2, 3)
foldLeft: 6
zip: List((3,a), (1,b), (2,c))
groupBy: List((0,List(2)), (1,List(3, 1)))
flatMap: List(3, 3, 1, 1, 2, 2)
take/drop: (List(3, 1),List(2))

Häufige Fehler

@main def main(): Unit =
  val x: Int = "text"

Fehlermeldung:

Type Mismatch Error
@main def main(): Unit =
  val x = 1
  x = 2

Fehlermeldung:

Reassignment to val x

Achtung

Scala-Programme brauchen genaue Einrückung bei der Indentation-Syntax; mische Tabs und Leerzeichen nicht.

Weiterführende Quellen

  • docs.scala-lang.org: offizielle Dokumentation und Tour
  • Scala Book und “Scala 3 Reference”
  • scala-cli.virtuslab.org
  • Rock the JVM: Kurse und Videos

Merke

  • Scala verbindet OOP und funktionale Programmierung auf der JVM
  • Unveränderlichkeit, Pattern Matching und Typinferenz sind zentral

Übungsaufgabe

Portiere ein kleines Java-Programm nach Scala und vergleiche den Umfang.

Quiz zur Selbstkontrolle

Weiter im Kurs

Zurück: Nebenläufigkeit und Ökosystem

Alle Kapitel: Scala im Überblick