Menu
Coddy logo textTech

Acceso null-aware

Parte de la sección Fundamentos del Journey de Dart de Coddy — lección 29 de 94.

El operador de acceso consciente de null (?.) accede de manera segura a propiedades en objetos potencialmente nulos, previniendo errores en tiempo de ejecución.

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

Con valores nulos, devuelve null en lugar de fallar:

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

Desafío

Fácil

Crea un programa en Dart que demuestre el operador de acceso consciente de nulos (?.) con un personaje de juego:

  1. Crea una variable String nullable llamada playerName y configúrala a null
  2. Crea una variable int nullable llamada playerScore y configúrala a 100
  3. Usa el operador de acceso consciente de nulos (?.) para obtener la longitud de playerName y almacenarla en una variable llamada nameLength
  4. Imprime el siguiente mensaje: Player name length: X (donde X es el valor de nameLength)
  5. Actualiza playerName a "Champion"
  6. Usa nuevamente el operador de acceso consciente de nulos para obtener la longitud actualizada y almacenarla en nameLength
  7. Imprime el mensaje actualizado: Player name length: X (donde X es el nuevo valor)
  8. Imprime la puntuación del jugador con este formato: Player score: 100

Hoja de referencia

El operador de acceso null-aware (?.) accede de manera segura a propiedades en objetos potencialmente null, previniendo errores en tiempo de ejecución.

Cuando el objeto no es null, devuelve el valor de la propiedad:

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

Cuando el objeto es null, devuelve null en lugar de fallar:

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

Pruébalo tú mismo

void main() {
  // Declara tus variables nullable aquí
  String? playerName = _;
  int? playerScore = _;
  
  // Obtén la longitud de playerName usando el operador ?.
  int? nameLength = playerName_.length;
  
  // Imprime la longitud inicial del nombre
  print("Player name length: ${nameLength}");
  
  // Actualiza playerName
  playerName = _;
  
  // Obtén la longitud actualizada usando el operador ?.
  nameLength = playerName_.length;
  
  // Imprime la longitud actualizada del nombre
  print("Player name length: ${nameLength}");
  
  // Imprime la puntuación del jugador
  print("Player score: ${playerScore}");
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Fundamentos