Menu
Coddy logo textTech

Оператор условной нулевости

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

Оператор осведомлённости о null (??) возвращает левое выражение, если оно не равно null, в противном случае возвращает правое выражение.

void main() {
  String? name = 'Dart';
  String displayName = name ?? 'Guest';
  
  print('Hello, $displayName!');
}
void main() {
  String? name = null;
  String displayName = name ?? 'Guest';
  
  print('Hello, $displayName!');
}
void main() {
  int? score;  // Нет начального значения, по умолчанию null
  int displayScore = score ?? 0;
  
  print('Your score: $displayScore');
  
  // Позже в программе score получает значение
  score = 100;
  displayScore = score ?? 0;
  
  print('Your updated score: $displayScore');
}
challenge icon

Задание

Легко

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

  1. Объявите nullable переменную типа String с именем username и присвойте ей значение null
  2. Объявите nullable переменную типа int с именем userAge и присвойте ей значение null
  3. Используйте оператор null-aware, чтобы присвоить значение по умолчанию "Guest" новой переменной displayName, если username равно null
  4. Используйте оператор null-aware, чтобы присвоить значение по умолчанию 18 новой переменной displayAge, если userAge равно null
  5. Выведите значения в ТОЧНО следующем формате:
Username: Guest (default value used)
Age: 18 (default value used)

Затем:

  1. Обновите username до "DartUser"
  2. Обновите userAge до 25
  3. Повторите шаги 3 и 4 с обновлёнными значениями
  4. Выведите значения в ТОЧНО следующем формате:
Username: DartUser (original value used)
Age: 25 (original value used)

Шпаргалка

Оператор нулевого слияния (??) возвращает левое выражение, если оно не null, в противном случае возвращает правое выражение.

String? name = null;
String displayName = name ?? 'Guest';  // Возвращает 'Guest', поскольку name равно null

int? score = 100;
int displayScore = score ?? 0;  // Возвращает 100, поскольку score не равно null

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

void main() {
  // Объявляем nullable переменные
  String? username = _;
  int? userAge = _;
  
  // Используем null-aware оператор для значений по умолчанию
  String displayName = username ?? _;
  int displayAge = userAge ?? _;
  
  // Выводим начальные значения
  print("Username: $displayName (default value used)");
  print("Age: $displayAge (default value used)");
  
  // Обновляем переменные
  username = _;
  userAge = _;
  
  // Снова используем null-aware оператор
  displayName = username _ "Guest";
  displayAge = userAge _ 18;
  
  // Выводим обновленные значения
  print("Username: $displayName (original value used)");
  print("Age: $displayAge (original value used)");
}
quiz iconПроверьте себя

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

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