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 a
równe b
, ale jeśli b
jest null, to a
jest równe 'hello'
.
Innym powiązanym operatorem jest ??=
. Na przykład:
b ??= 'hello';
Oznacza to, że jeśli b
jest 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'