Quelle est la différence entre var
et val
à Kotlin?
J'ai parcouru ce lien:
https://kotlinlang.org/docs/reference/properties.html
Comme indiqué sur ce lien:
La syntaxe complète d'une déclaration de propriété en lecture seule diffère d'une déclaration mutable de deux manières: elle commence par val au lieu de var et ne permet pas de définir.
Mais juste avant il y a un exemple qui utilise un setter.
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
}
Quelle est la différence exacte entre var
et val
?
Pourquoi avons-nous besoin des deux?
Ce n'est pas un doublon de variables dans Kotlin, des différences avec Java. var vs val? car je pose des questions sur le doute lié à l'exemple particulier de la documentation et pas seulement en général.
result
ne peut pas être modifié pour faire référence à une autre instance deAddress
, mais l'instance à laquelle il fait référence peut toujours être modifiée. La même chose serait vraie à Java si vous aviez unfinal Address result = new Address();
Réponses:
Dans votre code
result
ne change pas, sesvar
propriétés changent. Reportez-vous aux commentaires ci-dessous:val
est le même que lefinal
modificateur en java. Comme vous devez probablement le savoir, nous ne pouvons plus assigner unefinal
variable mais pouvons changer ses propriétés.la source
val
- clé etvar
sont utilisés pour déclarer les propriétés? pas variable?val
et lesvar
deux sont utilisés pour déclarer une variable.Pour plus d'informations sur ce qu'est
val
etvar
veuillez voir le lien ci-dessousla source
les variables définies avec var sont mutables (lecture et écriture)
les variables définies avec val sont immuables (lecture seule)
Kotlin peut supprimer findViewById et réduire le code de setOnClickListener dans le studio Android. Pour une référence complète: fonctionnalités impressionnantes de Kotlin
La valeur des variables modifiables peut être modifiée à tout moment, tandis que vous ne pouvez pas modifier la valeur des variables immuables.
où dois-je utiliser var et où val?
utilisez var où la valeur change fréquemment. Par exemple lors de la localisation de l'appareil Android
utilisez val où il n'y a pas de changement de valeur dans toute la classe. Par exemple, vous souhaitez définir la vue de texte ou le texte du bouton par programmation.
la source
val
utiliser pour déclarer la variable finale. Caractéristiques desval
variablesvar
est une variable généraleNous pouvons initialiser plus tard en utilisant le
lateinit
modificateur[
lateinit
également utilisé pour la variable globale, nous ne pouvons pas l'utiliser pour la variable locale]val
enkotlin
est commefinal
mot clé dansjava
la source
Simplement, var (mutable) et val (valeurs immuables comme en Java (dernier modificateur))
la source
val est
immutable
et var estmutable
à Kotlin.la source
Pensez simplement à Val comme variable finale en java
la source
Référence
la source
Vous pouvez facilement le penser comme:
var
est utilisé pour le setter (la valeur changera).val
est utilisé pour getter (lecture seule, la valeur ne changera pas).la source
Si nous déclarons une variable en utilisant
val
alors ce sera une variable en lecture seule . Nous ne pouvons pas changer sa valeur. C'est comme la dernière variable de Java . Ça l'estimmutable
.Mais si nous déclarons une variable en utilisant
var
alors ce sera une variable que nous pouvons lire ou écrire . Nous pouvons changer sa valeur. Ça l'estmutable
.val
ne peut pas être initialisé récemment par le mot-clélateinit
mais non primitifvar
peut être initialisé récemment par le mot-clélateinit
.la source
Fondamentalement
var
= variable , donc il peut changerval
= valeur , il ne peut donc pas changer.la source
val
exemple :var
exemple :Si vous essayez de changer un immuable
val
, l'IDE vous montrera une erreur:Mais un mutable
var
peut être changé:J'espère que cela t'aides.
la source
La propriété val est similaire à la propriété finale en Java. Vous n'êtes autorisé à lui attribuer une valeur qu'une seule fois. Lorsque vous essayez de le réaffecter avec une valeur pour la deuxième fois, vous obtiendrez une erreur de compilation. Alors que la propriété var est modifiable, vous êtes libre de la réaffecter quand vous le souhaitez et à tout moment.
la source
Avez-vous besoin de changer une variable ou de la définir de façon permanente?
Un bon exemple si c'est quelque chose comme val pi5places = 3.14159 vous le définiriez comme
val
. Y a-t-il une possibilité que vous deviez changer cette variable maintenant ou plus tard, alors vous la définiriez comme var.Par exemple: La couleur d'une voiture peut être
var colorCar = green
. Plus tard, vous pouvez changer celacolorCar = blue
, alors qu'en tant queval
, vous ne pouvez pas.Les réponses ici concernant
mutable
etimmutable
est très bien, mais peuvent être effrayantes si ces termes ne sont pas bien connus ou simplement pour apprendre à programmer.la source
La valeur de la
val
variable ne peut être affectée qu'une seule fois.Bien que vous ne puissiez pas réaffecter la valeur, vous pouvez certainement modifier les propriétés de l'objet.
Cela signifie que vous ne pouvez pas modifier la référence d'objet vers laquelle la variable pointe, mais les propriétés sous-jacentes de cette variable peuvent être modifiées.
La valeur de la variable var peut être réaffectée autant de fois que vous le souhaitez.
De toute évidence, ses propriétés sous-jacentes peuvent être modifiées tant qu'elles ne sont pas déclarées val.
la source
Deux façons de créer une variable dans KOTLIN VAL et VAR
1. VAL stocke des valeurs constantes. Aussi appelé variable finale
2. VAR stocke les valeurs modifiables
Cliquez ici par exemple
la source
val
commeconstant
variable, elle-même ne peut pas être changée, seulement peut être lue, mais les propriétés d'unval
peuvent être modifiées;var
tout comme la variable mutante dans d'autres langages de programmation.la source
val est immuable, final, la première valeur affectée ne peut pas être modifiée.
var est mutable, réaffectable, vous pouvez changer la valeur encore et encore.
la source
Les deux,
val
etvar
peuvent être utilisés pour déclarer des variables (propriétés locales et propriétés de classe).Variables locales :
val
déclare des variables en lecture seule qui ne peuvent être affectées qu'une seule fois, mais ne peuvent pas être réaffectées .Exemple:
var
déclare les variables réaffectables telles que vous les connaissez depuis Java (le mot clé sera introduit dans Java 10, «inférence de type de variable locale» ).Exemple:
Il est toujours préférable d'utiliser
val
. Essayez d'éviter levar
plus souvent possible!Propriétés de classe :
Les deux mots clés sont également utilisés afin de définir des propriétés à l'intérieur des classes . Par exemple, jetez un œil à ce qui suit
data class
:Le
Person
contient deux champs, dont l'un est en lecture seule (name
). Leage
, d'autre part, peut être réaffecté après instanciation de classe, via le fournisetter
. Notez qu'ilname
n'y aura pas de méthode de définition correspondante.la source
Les deux variables sont utilisées comme initialisation
val comme une variable constante, il peut être lisible et les propriétés d'un val peuvent être modifiées.
var comme une variable mutable. vous pouvez modifier la valeur à tout moment.
la source
En bref, la variable val est finale (non modifiable) ou une valeur constante qui ne sera pas modifiée à l'avenir et la variable var (modifiable) peut être modifiée à l'avenir.
Voir le code ci-dessus. Il s'agit d'une classe modèle, qui sera utilisée pour le passage des données. J'ai mis val avant la variable car cette variable a été utilisée pour obtenir les données.
De plus, si vous devez définir des données plus tard, vous devez utiliser le mot-clé var avant une variable, si vous n'avez besoin d'obtenir la valeur qu'une seule fois, puis utilisez le mot-clé val
la source
Ordinaire
Val
utilise pour lestatic
champ comme en Java commeStatic Keyword
Comme
Static
en Java / Même qu'en kotlinEt
Var
dénote le champ variable dans Kotlin, vous pouvez le changer.Surtout
Static
est utilisé lorsque vous souhaitez enregistrer la valeur dans la mémoire statique à la fois,Exemple:
Vous ne pouvez pas changer, c'est la valeur finale et statique
var b=2
b=4
Tu peux le changerla source
val: doit ajouter ou initialiser une valeur mais ne peut pas changer. var: sa variable peut changer dans n'importe quelle ligne de code.
la source
Dans kotlin, nous pouvons déclarer une variable de deux types:
val
etvar
.val
ne peut pas être réaffecté, il fonctionne comme une variable finale.De l'autre côté, var peut être réaffecté il est mutable
la source
Les deux sont variables, la seule différence est la variable Mutable et la variable immuable et il n'y a plus de différence. var est une variable Mutable et val est immuable. Dans un langage simple var peut changer sa valeur après la valeur d'initialisation val est constant et il ne peut pas changer sa valeur après l'initialisation de la valeur.
la source
val
(à partir de la valeur): référence immuable. Une variable déclarée avecval
ne peut pas être réaffectée après son initialisation. Il correspond à unefinal
variable en Java.var
(à partir d'une variable): référence mutable. La valeur d'une telle variable peut être modifiée. Cette déclaration correspond à une variable Java régulière (non finale).la source
Var signifie Variable -Si vous avez stocké un objet en utilisant 'var', il pourrait changer dans le temps.
Par exemple:
Val signifie valeur - C'est comme une «constante» en java. Si vous avez stocké un objet en utilisant «val», il ne pourrait pas changer dans le temps.
Par exemple:
la source
VAR est utilisé pour créer ces variables dont la valeur changera au fil du temps dans votre application. C'est la même chose que VAR de swift, alors que VAL est utilisé pour créer les variables dont la valeur ne changera pas au fil du temps dans votre application. C'est la même chose que LET de swift.
la source
val - immuable (une fois initialisé ne peut pas être réaffecté)
var - Mutable (peut changer la valeur)
Exemple
à Kotlin - val n = 20 & var n = 20
En Java - final int n = 20; & int n = 20;
la source
var est une variable mutable et peut être affectée plusieurs fois et val est une variable immuable et ne peut être initialisée qu'une seule fois.
la source