В следующей строке кода есть два вопросительных знака:
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'