Sobes.tech
Junior

Quelle est la différence entre les mots-clés final et const en Dart?

sobes.tech IA

Réponse de l'IA

final et const sont utilisés pour créer des variables dont les valeurs ne peuvent pas être modifiées après l'initialisation.

Principales différences :

  • Moment de l'initialisation :

    • final est initialisé au moment de l'exécution (runtime) lors de la première utilisation.
    • const est initialisé lors de la compilation (compile-time).
  • Type de valeurs :

    • La variable final peut contenir une valeur calculée lors de l'exécution.
    • La variable const doit contenir une valeur calculable lors de la compilation (littéraux, résultats d'expressions constantes).
  • Constance :

    • final : La variable est constante, mais la valeur à laquelle elle fait référence (si c'est un objet) peut être modifiable.
    • const : La variable est constante, et la valeur à laquelle elle fait référence doit également être constante (immutable).

Exemples :

// final - initialisé lors de l'exécution
final DateTime now = DateTime.now(); // La valeur n'est connue qu'en runtime

// const - initialisé lors de la compilation
const double pi = 3.14; // La valeur est connue à l'étape de compilation

// Utiliser const pour les listes et les cartes les rend immuables
const List<int> constantList = [1, 2, 3];
// constantList[0] = 10; // Erreur ! La liste est immuable

// Utiliser final pour les listes et les cartes rend la variable immuable,
// mais le contenu de l'objet peut être modifié (si l'objet est mutable)
final List<int> finalList = [1, 2, 3];
finalList[0] = 10; // Permis, car la liste elle-même est mutable

// final avec une valeur constante
final int a = 5; // Possible, mais `const` serait plus approprié
Initialisation Exigences concernant la valeur Mutabilité de l'objet (si référence à un objet)
final Lors de l'exécution Peut être calculé lors de l'exécution Peut être mutable si l'objet l'est
const Lors de la compilation Doit être connu lors de la compilation Doit être immuable