val im Vergleich zu var
Unveränderliche und veränderliche Bindings.
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 = 10Ein 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 valEin 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 mismatchval 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.
valist unveränderlich und die Standardwahl.varist veränderlich und Werten vorbehalten, die sich ändern müssen.- Die Neuzuweisung eines
valist ein Compile-Fehler. - Die Typen sind bei beiden festgelegt;
lazy valverschiebt die Berechnung.
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
- val im Vergleich zu var
- Grundlegende Typen und Literale
- Typinferenz
- Ausdrücke statt Anweisungen