J'ai récemment lu sur le const
mot - clé, et je suis tellement confus! Je ne trouve aucune différence entre const
et le val
mot clé, je veux dire que nous pouvons utiliser les deux pour créer une variable immuable, y a-t-il autre chose qui me manque?
276
Réponses:
const
s sont des constantes de temps de compilation. Cela signifie que leur valeur doit être affectée pendant la compilation, contrairement àval
s, où elle peut être effectuée lors de l'exécution.Cela signifie que
const
s ne peut jamais être affecté à une fonction ou à un constructeur de classe, mais uniquement à uneString
ou primitive.Par exemple:
la source
const val foo = "Hello world"
etval bar = "Hello world"
? Sont-ils les mêmes?const
valeurs seront juste complètement intégrées lors de la compilation.const val
au lieu de justeconst
? Il me semble que leval
mot-clé est totalement superflu dans ce contexte, carconst var
serait absurde à première vue.const val
,const
est un modificateur surval
plutôt qu'un mot clé. Modificateurs> mots-clés. D' autres exemples de cette même conception sontannotation/enum/data class
,private val
,inline fun
, etc.Pour ajouter à la réponse de Luka:
Source: documentation officielle
la source
Vous pouvez transformer le Kotlin en Java. Ensuite, vous pouvez voir que const a un modificateur statique de plus que val . Le code simple comme celui-ci.
Kotlin:
Vers Java (partie):
la source
const
est supprimé, produira-t-il un fichier Java différent?Les deux
val
etconst
sont immuables.const
est utilisé pour déclarer les constantes au moment de la compilation, tandis queval
pour les constantes au moment de l'exécution.la source
const kotlin à Java
val kotlin à Java
En langage simple
Exemple 1-
En effet, getCar () est évaluée au moment de l'exécution et affecte la valeur à Car.
Aditionellement -
la source
En kotlin,
const
et lesval
deux représentent l'immuabilité et les valeurs en lecture seule et agissent commefinal
mot-clé en java.val
Le mot clé doit être utilisé pour déclarer les valeurs d'exécution et leconst
mot clé doit être utilisé pour déclarer les valeurs d'heure de compilation.Gardez à l'esprit que const ne doit être utilisé qu'avec des types de données primitifs et non pour la fonction et les constructeurs.
la source