Was ist der Unterschied zwischen var
und val
in Kotlin?
Ich habe diesen Link durchgesehen:
https://kotlinlang.org/docs/reference/properties.html
Wie auf diesem Link angegeben:
Die vollständige Syntax einer schreibgeschützten Eigenschaftsdeklaration unterscheidet sich in zweierlei Hinsicht von einer veränderlichen: Sie beginnt mit val anstelle von var und lässt keinen Setter zu.
Aber kurz bevor es ein Beispiel gibt, das einen Setter verwendet.
fun copyAddress(address: Address): Address {
val result = Address() // there's no 'new' keyword in Kotlin
result.name = address.name // accessors are called
result.street = address.street
// ...
return result
}
Was ist der genaue Unterschied zwischen var
und val
?
Warum brauchen wir beide?
Dies ist kein Duplikat von Variablen in Kotlin, Unterschiede zu Java. var vs val? Ich frage nach dem Zweifel in Bezug auf das jeweilige Beispiel in der Dokumentation und nicht nur allgemein.
result
kann nicht geändert werden, um auf eine andere Instanz von zu verweisenAddress
, aber die Instanz, auf die sie verweist, kann trotzdem geändert werden. Das gleiche würde in Java gelten, wenn Sie einefinal Address result = new Address();
Antworten:
In Ihrem Code
result
ändert sich nicht, seinevar
Eigenschaften ändern sich. Siehe Kommentare unten:val
ist der gleiche wie derfinal
Modifikator in Java. Wie Sie wahrscheinlich wissen sollten, können wir einefinal
Variable nicht erneut zuweisen, sondern ihre Eigenschaften ändern.quelle
val
undvar
werden verwendet, um die Eigenschaften zu deklarieren? nicht variabel?val
undvar
beide werden verwendet, um eine Variable zu deklarieren.Weitere Informationen Wie
val
undvar
unter Link finden Siequelle
Mit var definierte Variablen sind veränderlich (Lesen und Schreiben)
Mit val definierte Variablen sind unveränderlich (schreibgeschützt)
Kotlin kann findViewById entfernen und den Code für setOnClickListener in Android Studio reduzieren. Als vollständige Referenz: Kotlin fantastische Funktionen
Der Wert veränderbarer Variablen kann jederzeit geändert werden, während der Wert unveränderlicher Variablen nicht geändert werden kann.
wo soll ich var verwenden und wo val?
Verwenden Sie var, wenn sich der Wert häufig ändert. Zum Beispiel beim Abrufen des Standorts des Android-Geräts
Verwenden Sie val, wenn sich der Wert in der gesamten Klasse nicht ändert. Sie möchten beispielsweise die Textansicht oder den Text der Schaltfläche programmgesteuert festlegen.
quelle
val
Verwenden Sie diese Option, um die endgültige Variable zu deklarieren. Eigenschaften vonval
Variablenvar
ist als allgemeine VariableWir können später mit initialisieren
lateinit
Modifikator[
lateinit
auch für globale Variablen verwenden, wir können es nicht für lokale Variablen verwenden]val
inkotlin
ist wie einfinal
Schlüsselwort injava
quelle
Einfach var (veränderlich) und val (unveränderliche Werte wie in Java (letzter Modifikator))
quelle
val ist
immutable
und var istmutable
in Kotlin.quelle
Denken Sie einfach, dass Val die letzte Variable in Java ist
quelle
Referenz
quelle
Sie können es leicht denken als:
var
wird für den Setter verwendet (Wert ändert sich).val
wird für Getter verwendet (schreibgeschützt, Wert ändert sich nicht).quelle
Wenn wir eine Variable mit deklarieren, handelt
val
es sich um eine schreibgeschützte Variable. Wir können seinen Wert nicht ändern. Es ist wie die letzte Variable von Java . Es istimmutable
.Wenn wir jedoch eine Variable mit deklarieren, ist
var
dies eine Variable, die wir lesen oder schreiben können . Wir können seinen Wert ändern. Es istmutable
.val
kann in letzter Zeit nicht durch das Schlüsselwort initialisiert werden,lateinit
aber nicht primitivvar
kann in letzter Zeit durch das Schlüsselwort initialisiert werdenlateinit
.quelle
Grundsätzlich
var
= variabel , damit es sich ändern kannval
= Wert , kann sich also nicht ändern.quelle
val
Beispiel:var
Beispiel:Wenn Sie versuchen, eine unveränderliche
val
IDE zu ändern , zeigt IDE den folgenden Fehler an:Aber ein Mutable
var
kann geändert werden:Hoffe das hilft.
quelle
Die Eigenschaft val ähnelt der Eigenschaft final in Java. Sie dürfen ihm nur einmal einen Wert zuweisen. Wenn Sie versuchen, es zum zweiten Mal mit einem Wert neu zuzuweisen, wird ein Kompilierungsfehler angezeigt. Während die Eigenschaft var veränderbar ist, können Sie sie jederzeit und zu jeder gewünschten Zeit neu zuweisen.
quelle
Müssen Sie eine Variable ändern oder dauerhaft festlegen?
Ein gutes Beispiel, wenn es so etwas wie val pi5places = 3.14159 ist , würden Sie es als festlegen
val
. Gibt es eine Möglichkeit, dass Sie diese Variable jetzt oder später ändern müssen, dann würden Sie sie als var festlegen.Zum Beispiel: Die Farbe eines Autos kann sein
var colorCar = green
. Später kannst du das änderncolorCar = blue
, woval
du es nicht kannst.Die Antworten hier in Bezug auf
mutable
undimmutable
sind in Ordnung, können aber beängstigend sein, wenn diese Begriffe nicht gut bekannt sind oder nur lernen, wie man programmiert.quelle
Der Wert der
val
Variablen kann nur einmal zugewiesen werden.Sie können den Wert zwar nicht neu zuweisen, aber Sie können die Eigenschaften des Objekts auf jeden Fall ändern.
Das heißt, Sie können die Objektreferenz, auf die die Variable zeigt, nicht ändern, aber die zugrunde liegenden Eigenschaften dieser Variablen können geändert werden.
Der Wert für die Variable var kann beliebig oft neu zugewiesen werden.
Offensichtlich können die zugrunde liegenden Eigenschaften geändert werden, solange sie nicht als val deklariert sind.
quelle
Zwei Möglichkeiten zum Erstellen von Variablen in KOTLIN VAL und VAR
1. VAL speichert konstante Werte. Wird auch als endgültige Variable bezeichnet
2. VAR speichert veränderbare Werte
Klicken Sie hier zum Beispiel
quelle
val
Wie eineconstant
Variable kann sie selbst nicht geändert, sondern nur gelesen werden, aber die Eigenschaften von aval
können geändert werden.var
genau wie mutierte Variable in anderen Programmiersprachen.quelle
val ist unveränderlich, endgültig, der erste zugewiesene Wert kann nicht geändert werden.
var ist veränderlich, neu zuweisbar, Sie können den Wert immer wieder ändern.
quelle
Beide
val
undvar
können zum Deklarieren von Variablen (lokale und Klasseneigenschaften) verwendet werden.Lokale Variablen :
val
deklariert schreibgeschützte Variablen, die nur einmal zugewiesen, aber nicht neu zugewiesen werden können .Beispiel:
var
deklariert neu zuweisbare Variablen, wie Sie sie aus Java kennen (das Schlüsselwort wird in Java 10, "Inferenz lokaler Variablentypen", eingeführt ).Beispiel:
Es ist immer vorzuziehen, zu verwenden
val
. Versuchevar
so oft wie möglich zu vermeiden !Klasseneigenschaften :
Beide Schlüsselwörter werden auch verwendet, um Eigenschaften innerhalb von Klassen zu definieren . Schauen Sie sich als Beispiel Folgendes an
data class
:Das
Person
enthält zwei Felder, von denen eines schreibgeschützt ist (name
). Dasage
kann andererseits nach der Klasseninstanziierung über das bereitgestellte neu zugewiesen werdensetter
. Beachten Sie, dassname
es keine entsprechende Setter-Methode gibt.quelle
Beide Variablen werden als Initialisierung verwendet
val wie eine konstante Variable. Es kann lesbar sein und die Eigenschaften eines val können geändert werden.
var genau wie eine veränderbare Variable. Sie können den Wert jederzeit ändern.
quelle
Kurz gesagt, die Variable val ist ein endgültiger (nicht veränderbarer) oder konstanter Wert, der in Zukunft nicht mehr geändert wird, und die Variable var (veränderlich) kann in Zukunft geändert werden.
Siehe den obigen Code. Es ist eine Modellklasse, die für die Datenübergabe verwendet wird. Ich habe val vor der Variablen gesetzt, weil diese Variable verwendet wurde, um die Daten abzurufen.
Wenn Sie später Daten festlegen müssen, müssen Sie das Schlüsselwort var vor einer Variablen verwenden. Wenn Sie den Wert nur einmal abrufen müssen, verwenden Sie das Schlüsselwort val
quelle
Normal
Val
verwendet fürstatic
Feld wie in Java alsStatic Keyword
Wie
Static
in Java / Wie in KotlinUnd
Var
bezeichnet Variablenfeld in Kotlin, das Sie ändern können.Meist
Static
verwendet, wenn Sie den Wert sofort im statischen Speicher speichern möchten.Beispiel:
Sie können nicht ändern, dies ist Endwert und statisch
var b=2
b=4
Du kannst es ändernquelle
val: muss Wert hinzufügen oder initialisieren, kann sich aber nicht ändern. var: Die Variable kann sich in jeder Codezeile ändern.
quelle
In Kotlin können wir Variablen in zwei Typen deklarieren:
val
undvar
.val
kann nicht neu zugewiesen werden, es funktioniert als endgültige Variable.Auf der anderen Seite kann var neu zugewiesen werden, es ist veränderbar
quelle
Beide sind variabel, der einzige Unterschied besteht darin, dass veränderliche Variable und unveränderliche Variable und es gibt keinen weiteren Unterschied. var ist eine veränderbare Variable und val ist unveränderlich. In der einfachen Sprache kann var den Wert nach der Initialisierung ändern. val ist konstant und kann den Wert nach der Initialisierung des Werts nicht ändern.
quelle
val
(vom Wert): Unveränderliche Referenz. Eine mit deklarierte Variableval
kann nach ihrer Initialisierung nicht neu zugewiesen werden. Es entspricht einerfinal
Variablen in Java.var
(von Variable): Veränderbare Referenz. Der Wert einer solchen Variablen kann geändert werden. Diese Deklaration entspricht einer regulären (nicht endgültigen) Java-Variablen.quelle
Var bedeutet Variable - Wenn Sie ein Objekt mit 'var' gespeichert haben, kann sich dies mit der Zeit ändern.
Beispielsweise:
Val bedeutet Wert - Es ist wie eine 'Konstante' in Java. Wenn Sie ein Objekt mit 'val' gespeichert haben, konnte es sich nicht zeitlich ändern.
Beispielsweise:
quelle
VAR wird zum Erstellen von Variablen verwendet, deren Wert sich im Laufe der Zeit in Ihrer Anwendung ändert. Es ist dasselbe wie VAR von Swift, während VAL zum Erstellen von Variablen verwendet wird, deren Wert sich im Laufe der Zeit in Ihrer Anwendung nicht ändert. Es ist dasselbe wie LET von Swift.
quelle
val - Unveränderlich (einmal initialisiert, kann nicht neu zugewiesen werden)
var - Mutable (kann den Wert ändern)
Beispiel
in Kotlin - val n = 20 & var n = 20
In Java - final int n = 20; & int n = 20;
quelle
var ist eine veränderbare Variable und kann mehrfach zugewiesen werden. val ist eine unveränderliche Variable und kann nur einmal initialisiert werden.
quelle