Syntax-Übersicht
| Konzept | Scala 3 |
|---|---|
| Konstante | val x = 1 |
| Variable | var y = 2 |
| Funktion | def f(a: Int): Int = a + 1 |
| Lambda | x => x * 2 oder _ * 2 |
| Klasse | class A(val n: Int) |
| Datenklasse | case class P(x: Int) |
| Trait | trait T: ... |
| Enum | enum E: case A, B |
| Bedingung | if c then a else b |
| Schleife | for i <- 1 to 3 do ... |
| Match | x match case 1 => ... |
| Option | Some(1), None |
| Interpolation | s"$x", f"$x%.2f" |
| Typklasse | given / 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 = 2Fehlermeldung
Reassignment to val x
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
Aufgabe
Portiere ein kleines Java-Programm nach Scala und vergleiche den Umfang.