Ich habe kürzlich über das const
Schlüsselwort gelesen und bin so verwirrt! Ich kann keinen Unterschied zwischen const
und dem val
Schlüsselwort feststellen. Ich meine, wir können beide verwenden, um eine unveränderliche Variable zu erstellen. Fehlt mir noch etwas?
276
Antworten:
const
s sind Kompilierungszeitkonstanten. Dies bedeutet, dass ihr Wert während der Kompilierungszeit zugewiesen werden muss, im Gegensatz zuval
s, wo dies zur Laufzeit erfolgen kann.Dies bedeutet, dass
const
s niemals einer Funktion oder einem Klassenkonstruktor zugewiesen werden kann, sondern nur einemString
oder einem Grundelement.Beispielsweise:
quelle
const val foo = "Hello world"
undval bar = "Hello world"
? Sind sie gleich?const
Werte werden beim Kompilieren nur vollständig eingeblendet.const val
statt nurconst
? Es scheint mir, dass dasval
Schlüsselwort in diesem Zusammenhang völlig überflüssig ist, daconst var
es auf den ersten Blick absurd wäre.const val
,const
ist ein Modifikator aufval
eher als ein Schlüsselwort. Modifikatoren> Schlüsselwörter. Weitere Beispiele für diesen baugleich sind,annotation/enum/data class
,private val
,inline fun
etc.Nur um Lukas Antwort zu ergänzen:
Quelle: Offizielle Dokumentation
quelle
Sie können den Kotlin in Java umwandeln. Dann können Sie sehen, dass const einen statischen Modifikator mehr als val hat . Der einfache Code wie dieser.
Kotlin:
Nach Java (Teil):
quelle
const
ist, wenn es entfernt wird, wird es eine andere Java-Datei ergeben?const kotlin nach Java
val kotlin nach Java
In einfacher Sprache
Beispiel 1-
Dies liegt daran, dass getCar () zur Laufzeit ausgewertet wird und den Wert Car zuweist.
Zusätzlich -
quelle
Beides
val
undconst
sind unveränderlich.const
wird verwendet, um Konstantenval
für die Kompilierungszeit zu deklarieren, während dies für Laufzeitkonstanten gilt.quelle
In Kotlin,
const
undval
beide stellen die Unveränderlichkeit und nur Werte gelesen und als handelnfinal
Schlüsselwort in Java.val
Das Schlüsselwort muss verwendet werden, um Laufzeitwerteconst
zu deklarieren, und das Schlüsselwort muss verwendet werden, um Kompilierungszeitwerte zu deklarieren.Beachten Sie, dass const nur mit primitiven Datentypen verwendet werden darf, nicht für Funktionen und Konstruktoren.
quelle