Spread(...) ve null-aware spread operatörü (...?) bir koleksiyona birden çok değer eklemek için kısa bir yol sağlar.
Örneğin, bir listenin tüm değerlerini başka bir listeye eklemek için spread operatörünü (...) kullanabilirsiniz:
var list = [1, 2, 3];
var list2 = [0, ...list];
assert(list2.length == 4);
Spread operatörünün sağındaki ifade null olabilirse, null alana duyarlı bir spread operatörü (...?) kullanarak istisnalardan kaçınabilirsiniz:
var list2 = [0, ...?list];
assert(list2.length == 1);
Tek tek öğelerden yeni bir koleksiyon oluşturmak istediğinizde koleksiyon değişmezleri mükemmeldir. Ancak, genellikle bu mevcut öğelerden bazıları zaten başka bir koleksiyonda depolanır.
... map veren bir ifade alır ve bu map'in tüm verilerini yeni map'e ekler.
var items = [2, 3, 4];
var set = { 1, 2, ...items };
çıktı: {1, 2, 3, 4}
Null-aware spread
var oops;
var list = [...oops];
print(list);
çıktı: Uncaught Error: TypeError: null: type 'JSNull' is not a subtype of type 'Iterable'
var oops;
var list = [...?oops];
print(list);
çıktı: []
var things = [2, null, 3];
var more = [1, ...things, 4]; // [1, 2, null, 3, 4].
var also = [1, ...?things, 4]; // [1, 2, null, 3, 4].
Bir dizideki boş öğeleri atlamak istiyorsanız:
var things = [2, null, 3];
var more = [1, ...things.where((thing) => thing != null), 4];
// [1, 2, 3, 4].
sabitler
const list = [2, 3];
const another = [1, ...list, 4]; // [1, 2, 3, 4].
Resources :)
https://github.com/dart-lang/language/blob/master/accepted/2.3/spread-collections/feature-specification.md
https://dart.dev/guides/language/language-tour#spread-operator
Top comments (0)