CodeBlanks Logo Icon CodeBlanks

Map iteration

for-in ve forEach ile Map gezinmayı öğrenirsin.

Map gezinme

Map'in her çiftine ulaşmak için birkaç yol var. İlki forEach: ages.forEach((k, v) => print('$k: $v'));. Bu, anahtar ve değeri sırayla verir.

İkincisi for-in ile entries: for (var e in ages.entries) { print(e.key); }. Burada her e bir MapEntry'dir ve .key ile .value alanları vardır.

Yalnızca anahtarları ya da değerleri gezmek istersen ages.keys veya ages.values kullanılır. Map ekleme sırasını korur; bu yüzden gezinme sırası öngörülebilirdir.

entries ve keys

entries her çifti bir MapEntry olarak verir; .key ve .value alanlarıyla ayrı ayrı erişilir. keys yalnızca anahtarları, values yalnızca değerleri döndürür.

Örnek: for (var k in ages.keys) print(k); her anahtarı alt alta yazar. for (var v in ages.values) print(v); ise değerleri yazar.

İşin sırası önemli olduğunda entries daha kullanışlıdır; yalnızca bir tarafa ilgi duyuyorsan keys veya values kısa yoldur.

Uygulama Yaşları yazdır

Bir Map<String, int> oluştur; içine iki kişi ekle. forEach ile her çifti $anahtar: $değer biçiminde print ile yazdır.

Başlangıç kodu

main.dart
void main() {
  var ages = <String, int>{};
  // iki çift ekle

  // forEach ile yazdır
}

Örnek çözüm

main.dart
void main() {
  var ages = <String, int>{};
  ages['Ayşe'] = 28;
  ages['Mert'] = 31;
  ages.forEach((k, v) => print('$k: $v'));
}

Beklenen çıktı

Ayşe: 28
Mert: 31

Soru ve cevaplar

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

1 Gezinme yollarını eşleştir

Kavram Anlamı
forEach Her çift için callback
entries MapEntry listesi
keys Yalnız anahtarlar
values Yalnız değerler

2 forEach imzası?

  • (k, v) => ... Doğru cevap
  • (k) => ...
  • (v) => ...
  • (e) => ...

Açıklama: Map.forEach iki parametre alır: anahtar ve değer.

3 for-in döngüsü

Soru
void main() {
  var ages = <String, int>{'Ayşe': 28};
  for (var e in ages.____) {
    print(e.key);
  }
}
Cevap
void main() {
  var ages = <String, int>{'Ayşe': 28};
  for (var e in ages.entries) {
    print(e.key);
  }
}

Açıklama: entries her çifti MapEntry olarak verir.

Başlangıç bölümündeki tüm dersler