Наступний рядок коду має два знаки запитання:
final myStringList = prefs.getStringList('my_string_list_key') ?? [];
Що сенс?
Відповіді:
Оператор ??подвійного знака запитання означає "якщо нуль". Візьмемо, наприклад, такий вираз.
String a = b ?? 'hello';
Це означає aдорівнює b, але якщо bдорівнює нулю, то aдорівнює 'hello'.
Іншим пов'язаним оператором є ??=. Наприклад:
b ??= 'hello';
Це означає, що якщо bзначення null, то встановіть його рівним hello. Інакше не змінюйте його.
Довідково
Умови
Випуск новин Dart 1,12 спільно іменовані надалі як нуль-залежних операторів :
?? - якщо нульовий оператор??= - нульове призначенняx?.p - нульовий доступx?.m() - виклик нульового методу?вже використовується оператор троичного: String a = b == true ? 'x' : 'y';. Який оператор if-null виявляється просто скороченням для трійкового перевірки null String a = a == null ? 'hello : a;.
?використовується для трійкового оператора так само, як і в PHP, і є ярлики, як замість того, щоб $a = $b === true ? $b : 'y'ви могли вводити, $a = $b === true ?: 'y'а замість $a = $b === true ? 'x' : $b-$a = $b === true ?? 'x'