Привет, коллеги-программисты! Сегодня мы собираемся углубиться в интересную особенность языка Dart, известную как оператор «двойной вопросительный знак». Этот оператор является важным инструментом для упрощения вашего кода и обеспечения нулевой безопасности. Итак, давайте пристегнемся и изучим возможности оператора двойного вопросительного знака Dart!
Во-первых, что такое оператор двойного вопросительного знака? В Dart он обозначается знаком «??» и используется как сокращение для обработки нулевых значений. Он позволяет вам указать значение по умолчанию, когда определенное выражение принимает значение null.
Вот простой пример, иллюстрирующий его использование:
String name;
String displayName = name ?? 'Guest';
print(displayName); // Output: Guest
В приведенном выше фрагменте кода переменной displayNameприсваивается значение name, если nameне равно нулю. В противном случае ему присваивается значение по умолчанию 'Guest'. Это устраняет необходимость в длинном коде проверки нулевых значений и делает ваш код более кратким и читабельным.
Теперь давайте рассмотрим еще несколько интересных случаев использования оператора двойного вопросительного знака:
- Присвоение значений по умолчанию. Вы можете использовать оператор двойного вопросительного знака, чтобы присваивать значения по умолчанию переменным, когда они имеют значение NULL.
 
int count;
int totalCount = count ?? 0;
print(totalCount); // Output: 0
- Объединение нескольких проверок на нулевое значение. Вы можете объединить несколько операторов с двойным вопросительным знаком для обработки нескольких проверок на нулевое значение в одной строке.
 
String name;
String displayName = name ?? 'Guest' ?? 'Unknown';
print(displayName); // Output: Guest
В приведенном выше примере, если nameимеет значение null, оно возвращается к 'Guest'. Если 'Guest'также равно нулю, он возвращается к 'Unknown'.
- Предотвращение вызова метода для нулевых объектов. Оператор двойного вопросительного знака можно использовать для предотвращения вызова метода для нулевых объектов.
 
String name;
String capitalized = name?.toUpperCase();
print(capitalized); // Output: null
В этом случае, если nameимеет значение NULL, метод toUpperCase()не будет вызываться, а результат будет нулевым. Это помогает предотвратить ошибки во время выполнения, вызванные нулевыми ссылками.
- Объединение с тернарным оператором. Вы можете объединить оператор двойного вопросительного знака с тернарным оператором для более сложной обработки значений NULL.
 
String name;
String displayName = name != null ? name : 'Guest';
print(displayName); // Output: Guest
В приведенном выше коде, если nameне равно нулю, ему присваивается значение displayName. В противном случае в качестве значения по умолчанию назначается 'Guest'.
Оператор двойного вопросительного знака Dart — это мощный инструмент для обработки нулевых значений и обеспечения нулевой безопасности в вашем коде. Используя этот оператор, вы можете писать более чистый и лаконичный код, который легче читать и поддерживать.
Подводя итог, можно сказать, что оператор двойного вопросительного знака в Dart упрощает обработку значений NULL, предоставляя краткое сокращение для присвоения значений по умолчанию. Его можно использовать для обработки значений NULL, объединения нескольких проверок NULL, предотвращения вызовов методов для объектов NULL и в сочетании с тернарным оператором для расширенной обработки NULL.
Итак, используйте возможности оператора двойного вопросительного знака Dart в своем коде, чтобы сделать его более надежным и эффективным!