Poniższy wiersz kodu zawiera dwa znaki zapytania:
final myStringList = prefs.getStringList('my_string_list_key') ?? [];
Jakie jest znaczenie?
Odpowiedzi:
Operator ??podwójnego znaku zapytania oznacza „jeśli null”. Weźmy na przykład następujące wyrażenie.
String a = b ?? 'hello';
Oznacza to arówne b, ale jeśli bjest null, to ajest równe 'hello'.
Innym powiązanym operatorem jest ??=. Na przykład:
b ??= 'hello';
Oznacza to, że jeśli bjest null, ustaw je na hello. W przeciwnym razie nie zmieniaj tego.
Odniesienie
Warunki
Dart 1,12 prasowa wspólnie określane dalej jako operatorów zerowych-aware :
?? - jeśli operator jest pusty??= - przypisanie ze świadomością zerowąx?.p - dostęp ze świadomością zerowąx?.m() - wywołanie metody uwzględniającej wartość null?jest już używany przez operatora potrójnego: String a = b == true ? 'x' : 'y';. Który operator if-null okazuje się być skrótem dla trójskładnikowego sprawdzenia zerowego, takiego jak String a = a == null ? 'hello : a;.
?jest używany jako operator trójskładnikowy w ten sam sposób w PHP i istnieją skróty, takie jak zamiast tego $a = $b === true ? $b : 'y'można wpisać $a = $b === true ?: 'y'lub zamiast $a = $b === true ? 'x' : $b-$a = $b === true ?? 'x'