Наступний рядок коду має два знаки запитання:
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'