次のコード行には、2つの疑問符があります。
final myStringList = prefs.getStringList('my_string_list_key') ?? [];
どういう意味ですか?
回答:
??二重の疑問符演算子手段「場合はnull」。たとえば、次の式を考えてみましょう。
String a = b ?? 'hello';
これはa等しいことを意味しますがb、がbnullの場合はにa等しくなり'hello'ます。
別の関連する演算子は??=です。例えば:
b ??= 'hello';
つまり、bがnullの場合は、に等しく設定しhelloます。それ以外の場合は、変更しないでください。
参照
条項
ダート1.12リリースのニュースをまとめて以下に呼ばヌルを意識した事業者:
?? --null演算子の場合??= --null対応の割り当てx?.p --null対応アクセスx?.m() --null対応のメソッド呼び出し?三項演算子によってすでに使用されているためですString a = b == true ? 'x' : 'y';。if-null演算子は、のような3項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'
Dartは、nullの可能性がある値を処理するための便利な演算子をいくつか提供しています。1つは?? =代入演算子で、変数が現在nullの場合にのみ変数に値を代入します。
int a; // The initial value of a is null.
a ??= 3;
print(a); // <-- Prints 3.
a ??= 5;
print(a); // <-- Still prints 3.
もう1つのnull認識演算子は?? 、式の値がnullでない限り、左側の式を返します。nullの場合、右側の式を評価して返します。
print(1 ?? 3); // <-- Prints 1.
print(null ?? 12); // <-- Prints 12.