J'ai récemment lu un article sur le mot clé const
et je suis tellement confus! Je ne trouve aucune différence entre cela et le mot clé val
. Je veux dire que nous pouvons utiliser les deux pour créer une variable immuable. Y a-t-il autre chose qui me manque?
Réponses
Trop de publicités? const
s sont des constantes de temps de compilation. Cela signifie que leur valeur doit être affectée au moment de la compilation, contrairement à val
s, où cela peut être fait à l'exécution.
Cela signifie que const
s ne peuvent jamais être affectés à une fonction ou à un constructeur de classe, mais uniquement à une String
ou à une primitive.
Par exemple:
const val foo = complexFunctionCall() //Not okay
val fooVal = complexFunctionCall() //Okay
const val bar = "Hello world" //Also okay
Juste pour ajouter à Luka réponse:
Des Constantes De Compilation
Les propriétés dont la valeur est connue au moment de la compilation peut être marquée comme la compilation des constantes de temps en utilisant le modificateur const. Ces propriétés doivent remplir les conditions suivantes:
- Niveau supérieur ou membre d'un objet
- Initialisé avec une valeur de type Chaîne de caractères ou un type primitif
- Pas de coutume de lecture
Source: la documentation Officielle
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 ça.
Kotlin:
const val str = "hello"
class SimplePerson(val name: String, var age: Int)
Pour Java (partie):
@NotNull
public static final String str = "hello";
public final class SimplePerson {
@NotNull
private final String name;
private int age;
@NotNull
public final String getName() {
return this.name;
}
public final int getAge() {
return this.age;
}
public final void setAge(int var1) {
this.age = var1;
}
public SimplePerson(@NotNull String name, int age) {
Intrinsics.checkParameterIsNotNull(name, "name");
super();
this.name = name;
this.age = age;
}
}