Scala for Backend Engineering & Functional Programming · Lektion

val im Vergleich zu var

Unveränderliche und veränderliche Bindings.

Lektion 1 von 413 Schritte

val im Vergleich zu var ist eine kostenlose Scala for Backend Engineering & Functional Programming-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Scala for Backend Engineering & Functional Programming-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Scala for Backend Engineering & Functional Programming-Kurs umfasst insgesamt 4 Lektionen.

Zwei Möglichkeiten, Werte zu benennen

In Scala binden Sie einen Namen mithilfe von val oder var an einen Wert.

val erstellt eine unveränderliche Bindung: Nach der Zuweisung kann sie nie auf einen anderen Wert verweisen. var erstellt eine veränderliche Bindung, die Sie später neu zuweisen können.

Die Wahl zwischen beiden gehört zu den ersten Gewohnheiten, die sich Backend-Entwicklerinnen und -Entwickler mit Scala aneignen.

val name = "Ada"
var score = 10

Ein val definieren

Ein val ist schreibgeschützt. Sie weisen ihm einmal einen Wert zu, und der Compiler garantiert, dass dieser gleich bleibt.

Dadurch lässt sich Ihr Code leichter nachvollziehen: Ein val überrascht Sie nie mit einem Wert, der an anderer Stelle geändert wurde.

object Main extends App {
  val pi = 3.14
  println(pi)
}

Die Neuzuweisung eines val schlägt fehl

Der Versuch, einem val einen neuen Wert zuzuweisen, führt zu einem Compile-Fehler, nicht zu einem Absturz zur Laufzeit. Der Compiler hält Sie an, bevor das Programm überhaupt ausgeführt wird.

Das folgende Snippet würde mit reassignment to val fehlschlagen.

val country = "Turkey"
country = "Spain" // error: reassignment to val

Ein var definieren

Einem var können Sie beliebig oft einen neuen Wert zuweisen, solange der neue Wert einen kompatiblen Typ besitzt.

Verwenden Sie var, wenn sich ein Wert im Laufe der Zeit tatsächlich ändern muss, etwa ein Zähler in einer Schleife.

object Main extends App {
  var count = 0
  count = count + 1
  count = count + 1
  println(count)
}

var behält seinen Typ

Auch wenn einem var neue Werte zugewiesen werden können, ist sein Typ bei der Definition festgelegt.

Wenn level als Int beginnt, können Sie später keinen String darin speichern. Der Compiler weist den Typkonflikt zurück.

var level = 1
level = 5        // ok, still an Int
level = "high"  // error: type mismatch

val standardmäßig bevorzugen

Idiomatic Scala bevorzugt fast überall val. Unveränderlichkeit verhindert ganze Klassen von Fehlern und macht nebenläufigen Code sicherer.

  • Greifen Sie zuerst zu val.
  • Wechseln Sie nur zu var, wenn Sie wirklich eine Veränderung benötigen.

var in val umschreiben

Viele Schleifen, die scheinbar ein var benötigen, lassen sich stattdessen mit einem val und einem Ausdruck formulieren.

Hier wird eine Summe mithilfe eines Bereichs und von sum berechnet, ganz ohne Veränderung.

object Main extends App {
  val total = (1 to 5).sum
  println(total)
}

Gültigkeitsbereich einer Bindung

Sowohl val als auch var gelten innerhalb des Blocks { ... }, in dem sie definiert wurden.

Eine innerhalb eines Blocks deklarierte Bindung ist außerhalb dieses Blocks nicht sichtbar. Das hält Namen übersichtlich und verhindert versehentliche Wiederverwendung.

object Main extends App {
  val outer = 1
  {
    val inner = 2
    println(outer + inner)
  }
  // inner is not visible here
}

Lazy val

Ein lazy val wird erst beim ersten Zugriff berechnet und anschließend zwischengespeichert.

Das ist praktisch für aufwendige Werte, die Sie möglicherweise nicht immer benötigen. Der Rumpf wird höchstens einmal ausgeführt.

object Main extends App {
  lazy val greeting = { println("computing"); "Hi" }
  println("before")
  println(greeting)
  println(greeting)
}

val mit explizitem Typ

Sie können den Typ einer Bindung nach einem Doppelpunkt angeben. Das dokumentiert die Absicht und kann den Typ gezielt erweitern.

Hier wird amount als Double deklariert, obwohl 10 wie ein Int aussieht.

val amount: Double = 10
val label: String = "price"

val und var im direkten Vergleich

Beide verhalten sich gleich, bis Sie versuchen, einen neuen Wert zuzuweisen.

  • val x: einmal zuweisen, dauerhaft festgelegt.
  • var y: frei zuweisen und neu zuweisen.

Das folgende Programm erhöht nur das var.

object Main extends App {
  val base = 100
  var bonus = 0
  bonus = bonus + 25
  println(base + bonus)
}

Kurzer Check

Testen Sie Ihr Verständnis von val und var.

Zusammenfassung

Sie haben die beiden Möglichkeiten kennengelernt, in Scala Namen zu binden.

  • val ist unveränderlich und die Standardwahl.
  • var ist veränderlich und Werten vorbehalten, die sich ändern müssen.
  • Die Neuzuweisung eines val ist ein Compile-Fehler.
  • Die Typen sind bei beiden festgelegt; lazy val verschiebt die Berechnung.
Kostenlos starten

Lerne Scala mit einem KI-Tutor — kostenlos

Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.

Kurse
39
Lektionen
143

Häufig gestellte Fragen

Ist die Lektion „val im Vergleich zu var“ kostenlos?

Ja — der vollständige Text von „val im Vergleich zu var“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Scala for Backend Engineering & Functional Programming-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Scala for Backend Engineering & Functional Programming-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „val im Vergleich zu var“?

Unveränderliche und veränderliche Bindings. Du übst Scala for Backend Engineering & Functional Programming mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Scala for Backend Engineering & Functional Programming zu starten?

Keine Vorkenntnisse erforderlich. Scala for Backend Engineering & Functional Programming auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.

Wie lange dauert die Lektion „val im Vergleich zu var“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Scala for Backend Engineering & Functional Programming-Lektion Code schreiben und ausführen?

Ja. Jede Scala for Backend Engineering & Functional Programming-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. val im Vergleich zu var
  2. Grundlegende Typen und Literale
  3. Typinferenz
  4. Ausdrücke statt Anweisungen
← Zurück zu Scala for Backend Engineering & Functional Programming