Die folgende Codezeile enthält zwei Fragezeichen:
final myStringList = prefs.getStringList('my_string_list_key') ?? [];
Was ist die Bedeutung?
Antworten:
Der ??doppelte Fragezeichenoperator bedeutet "wenn null". Nehmen Sie zum Beispiel den folgenden Ausdruck.
String a = b ?? 'hello';
Dies bedeutet agleich b, aber wenn bnull ist, dann ist agleich 'hello'.
Ein weiterer verwandter Betreiber ist ??=. Zum Beispiel:
b ??= 'hello';
Dies bedeutet, wenn bnull ist, setzen Sie es gleich hello. Ansonsten ändere es nicht.
Referenz
Bedingungen
In den Dart 1.12-Veröffentlichungsnachrichten wurde Folgendes als nullbewusste Operatoren bezeichnet :
?? - wenn Nulloperator??= - nullbewusste Zuordnungx?.p - nullbewusster Zugriffx?.m() - Null-fähiger Methodenaufruf?es bereits vom ternären Operator verwendet wird : String a = b == true ? 'x' : 'y';. Was sich herausstellt, dass der if-null-Operator nur eine Abkürzung für eine ternäre Nullprüfung ist String a = a == null ? 'hello : a;.
?wird für ternäre Operatoren auf die gleiche Weise in PHP verwendet, und es gibt Verknüpfungen wie anstelle von können $a = $b === true ? $b : 'y'Sie $a = $b === true ?: 'y'$a = $b === true ? 'x' : $b$a = $b === true ?? 'x'