Aşağıdaki kod satırında iki soru işareti vardır:
final myStringList = prefs.getStringList('my_string_list_key') ?? [];
Anlamı nedir?
Yanıtlar:
??Çift soru işareti operatör vasıtası "boş ise". Örneğin aşağıdaki ifadeyi ele alalım.
String a = b ?? 'hello';
Bu araçlar aeşittir b, ama eğer bnull sonra aeşittir 'hello'.
Bir başka ilgili operatör ??=. Örneğin:
b ??= 'hello';
Bu b, null ise eşittir anlamına gelir hello. Aksi takdirde değiştirmeyin.
Referans
Koşullar
Dart 1.12 sürümü haber toplu olarak aşağıda değinilen boş tanıyan operatörler :
?? - boş operatör ise??= - boş farkındalık atamax?.p - boş farkında erişimx?.m() - boşa duyarlı yöntem çağrısı?zaten üçlü operatör tarafından kullanılıyor: String a = b == true ? 'x' : 'y';. Hangi if-null operatörü, gibi üçlü bir boş kontrolün kısaltmasıdır String a = a == null ? 'hello : a;.
?, PHP'de aynı şekilde üçlü operatör için kullanılır ve $a = $b === true ? $b : 'y'sizin $a = $b === true ?: 'y'yerine veya yerine yazabileceğiniz gibi kısayollar vardır $a = $b === true ? 'x' : $b-$a = $b === true ?? 'x'
Dart, boş olabilecek değerlerle başa çıkmak için bazı kullanışlı operatörler sunar. Bunlardan biri, bir değişkene bir değer atayan ancak bu değişken o anda boş ise ?? = atama operatörüdür:
int a; // The initial value of a is null.
a ??= 3;
print(a); // <-- Prints 3.
a ??= 5;
print(a); // <-- Still prints 3.
Başka bir boşa duyarlı operatör ?? , ifadenin değeri boş olmadığı sürece solundaki ifadeyi döndürür; bu durumda sağındaki ifadeyi değerlendirir ve döndürür:
print(1 ?? 3); // <-- Prints 1.
print(null ?? 12); // <-- Prints 12.