Menu
Coddy logo textTech

Accès null-aware

Fait partie de la section Fondamentaux du Journey Dart de Coddy — leçon 29 sur 94.

L'opérateur d'accès null-aware (?.) accède en toute sécurité aux propriétés sur des objets potentiellement nuls, empêchant les erreurs d'exécution.

void main() {
  String? name = 'Dart';
  int? length = name?.length;
  
  print('Name: $name');
  print('Length: $length');
}

Avec des valeurs nulles, il retourne null au lieu de planter :

void main() {
  String? name = null;
  int? length = name?.length;
  
  print('Name: $name');
  print('Length: $length');
}
challenge icon

Défi

Facile

Créez un programme Dart qui démontre l'opérateur d'accès conscient des valeurs nulles (?.) avec un personnage de jeu :

  1. Créez une variable String nullable appelée playerName et définissez-la à null
  2. Créez une variable int nullable appelée playerScore et définissez-la à 100
  3. Utilisez l'opérateur d'accès conscient des valeurs nulles (?.) pour obtenir la longueur de playerName et stockez-la dans une variable appelée nameLength
  4. Affichez le message suivant : Player name length: X (où X est la valeur de nameLength)
  5. Mettez à jour playerName à "Champion"
  6. Utilisez à nouveau l'opérateur d'accès conscient des valeurs nulles pour obtenir la longueur mise à jour et stockez-la dans nameLength
  7. Affichez le message mis à jour : Player name length: X (où X est la nouvelle valeur)
  8. Affichez le score du joueur avec ce format : Player score: 100

Aide-mémoire

L'opérateur d'accès conscient de null (?.) accède en toute sécurité aux propriétés sur des objets potentiellement null, empêchant les erreurs d'exécution.

Quand l'objet n'est pas null, il retourne la valeur de la propriété :

String? name = 'Dart';
int? length = name?.length; // Retourne 4

Quand l'objet est null, il retourne null au lieu de planter :

String? name = null;
int? length = name?.length; // Retourne null

Essayez vous-même

void main() {
  // Déclarez vos variables nullables ici
  String? playerName = _;
  int? playerScore = _;
  
  // Obtenez la longueur de playerName en utilisant l'opérateur ?.
  int? nameLength = playerName_.length;
  
  // Affichez la longueur initiale du nom
  print("Player name length: ${nameLength}");
  
  // Mettez à jour playerName
  playerName = _;
  
  // Obtenez la longueur mise à jour en utilisant l'opérateur ?.
  nameLength = playerName_.length;
  
  // Affichez la longueur mise à jour du nom
  print("Player name length: ${nameLength}");
  
  // Affichez le score du joueur
  print("Player score: ${playerScore}");
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Fondamentaux