CodeBlanks Logo Icon CodeBlanks

Iterable

Iterable ile yinelenebilir koleksiyon öğrenirsin.

Iterable<T>

Iterable<T> üst koleksiyon arayüzüdür. List, Set ve Queue'nün ortak atasıdır. Bir Iterable, elemanları teker teker dolaşılabilen bir dizidir; ancak indeksle erişimi desteklemez.

Bir List veya Set aslında bir Iterable'dır. where, map, fold gibi metotlar Iterable üzerinden çalışır. Bu metotlar tembel (lazy) çalışır; yani sonuç yalnızca istendiğinde üretilir.

Örnek: Iterable<int> sayilar = [1, 2, 3, 4, 5]; var çiftler = sayilar.where((n) => n.isEven);. Burada çiftler henüz hesaplanmadı; toList() çağrılınca üretilir.

Tembel değerlendirme

Iterable üzerinde where veya map çağırdığında sonuç anında hesaplanmaz. Yalnızca toList(), length veya bir döngü gibi bir işlem yapıldığında elemanlar üretilir.

Buna tembel değerlendirme denir. Avantajı, gereksiz hesaplama yapılmamasıdır. Örneğin büyük bir listede yalnızca ilk üç çift sayıyı istiyorsan, tüm liste süzülmez.

toList() metodu tembel sonuçu somut bir listeye çevirir. Böylece sonuçu yazdırabilir veya indeksle erişebilirsin.

Uygulama Iterable ile süzme

Iterable<int> numbers = [1, 2, 3, 4, 5] tanımla. where ile çift sayıları süz. toList() ile sonuçu listeye çevir ve yazdır. Sonra evens.length'i yazdır.

Başlangıç kodu

main.dart
void main() {
  // Iterable<int> tanımla, where ile çiftleri süz
  // toList ile listeye çevir ve yazdır
}

Örnek çözüm

main.dart
void main() {
  Iterable<int> numbers = [1, 2, 3, 4, 5];
  var evens = numbers.where((n) => n.isEven);
  print(evens.toList());
  print(evens.length);
}

Beklenen çıktı

[2, 4]
2

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Iterable tanımla

Soru
Iterable<int> sayilar = [1, 2, 3, 4, 5];
var çiftler = sayilar.____((n) => n.isEven);
Cevap
Iterable<int> sayilar = [1, 2, 3, 4, 5];
var çiftler = sayilar.where((n) => n.isEven);

Açıklama: where metodu koşula göre eleman süzer.

2 Iterable hangi özelliğe sahiptir?

  • Tembel çalışır ve indeks desteklemez Doğru cevap
  • Yalnızca sayı tutar
  • İndeksle erişim destekler
  • Sabit boyutludur

Açıklama: Iterable tembel çalışır ve indeksle erişimi desteklemez.

3 Iterable metotlarını eşleştir

Kavram Anlamı
where(...) Süzme
map(...) Dönüştürme
toList() Listeye çevirme
fold(...) Birleştirme

Orta seviye bölümündeki tüm dersler