Menu
Coddy logo textTech

Доступ условной нулевости

Часть раздела Основы путешествия по Dart на Coddy — урок 29 из 94.

Оператор условного доступа (?.) безопасно обращается к свойствам потенциально null-объектов, предотвращая ошибки во время выполнения.

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

При null-значениях возвращает null вместо сбоя:

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

Задание

Легко

Создайте программу на Dart, которая демонстрирует оператор null-aware доступа (?.) с персонажем игры:

  1. Создайте nullable переменную типа String с именем playerName и установите значение null
  2. Создайте nullable переменную типа int с именем playerScore и установите значение 100
  3. Используйте оператор null-aware доступа (?.), чтобы получить длину playerName и сохранить её в переменной с именем nameLength
  4. Выведите следующее сообщение: Player name length: X (где X — значение nameLength)
  5. Обновите playerName до "Champion"
  6. Снова используйте оператор null-aware доступа, чтобы получить обновлённую длину и сохранить её в nameLength
  7. Выведите обновлённое сообщение: Player name length: X (где X — новое значение)
  8. Выведите счёт игрока в этом формате: Player score: 100

Шпаргалка

Оператор доступа с учётом null (?.) безопасно обращается к свойствам потенциально null-объектов, предотвращая ошибки времени выполнения.

Когда объект не равен null, он возвращает значение свойства:

String? name = 'Dart';
int? length = name?.length; // Возвращает 4

Когда объект равен null, он возвращает null вместо сбоя:

String? name = null;
int? length = name?.length; // Возвращает null

Попробуйте сами

void main() {
  // Объявите здесь ваши nullable переменные
  String? playerName = _;
  int? playerScore = _;
  
  // Получите длину playerName с использованием оператора ?.
  int? nameLength = playerName_.length;
  
  // Выведите начальную длину имени
  print("Player name length: ${nameLength}");
  
  // Обновите playerName
  playerName = _;
  
  // Получите обновленную длину с использованием оператора ?.
  nameLength = playerName_.length;
  
  // Выведите обновленную длину имени
  print("Player name length: ${nameLength}");
  
  // Выведите счет игрока
  print("Player score: ${playerScore}");
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы