CodeBlanks Logo Icon CodeBlanks

fold ve reduce

fold ve reduce ile toplu hesap öğrenirsin.

fold ve reduce

fold ve reduce bir koleksiyonu tek bir değere indirir. Toplam, çarpım, en büyük gibi hesaplamalar için kullanılırlar. İkisi de her elemanı sırayla biriktirir.

reduce özgün başlangıç değeri almaz; ilk elemanı başlangıç sayar. fold ise bir başlangıç değeri alır; boş koleksiyonda da güvenlidir.

Örnek: var toplam = [1, 2, 3, 4].fold(0, (acc, n) => acc + n);. Burada 0 başlangıç, acc biriken değer, n sıradaki eleman. Sonuç: 10.

reduce ile çarpım

reduce başlangıç değeri almaz. İlk eleman başlangıç kabul edilir ve ikinciden başlanarak biriktirilir. Boş koleksiyonda reduce hata fırlatır.

Örnek: var carpim = [1, 2, 3, 4].reduce((a, b) => a * b);. Burada a biriken, b sıradaki. İşlem: 1*2=2, 2*3=6, 6*4=24. Sonuç: 24.

fold daha güvenlidir çünkü başlangıç değeri verirsin. reduce ise daha kısa yazılır; boş olmayan koleksiyonlarda tercih edilir.

Uygulama Toplam ve çarpım hesapla

[1, 2, 3, 4] listesi üzerinde fold(0, (acc, n) => acc + n) ile toplamı hesapla ve yazdır. Aynı liste üzerinde reduce((a, b) => a * b) ile çarpımı hesapla ve yazdır.

Başlangıç kodu

main.dart
void main() {
  var sayilar = [1, 2, 3, 4];
  // .fold ile toplamı, .reduce ile çarpımı hesapla, sonuçları yazdır
}

Örnek çözüm

main.dart
void main() {
  var sayilar = [1, 2, 3, 4];
  var toplam = sayilar.fold(0, (acc, n) => acc + n);
  var carpim = sayilar.reduce((a, b) => a * b);
  print(toplam);
  print(carpim);
}

Beklenen çıktı

10
24

Soru ve cevaplar

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

1 fold parçalarını eşleştir

Kavram Anlamı
0 Başlangıç değeri
acc Biriken değer
n Sıradaki eleman
acc + n Birikim işlemi

2 fold ve reduce arasındaki fark nedir?

  • fold başlangıç değeri alır, reduce almaz Doğru cevap
  • reduce daha hızlıdır
  • fold yalnızca liste için çalışır
  • İkisi tamamen aynıdır

Açıklama: fold başlangıç değeri alır, reduce ilk elemanı başlangıç sayar.

3 fold çağrısı

Soru
var sayilar = [1, 2, 3, 4];
var toplam = sayilar.____(0, (acc, n) => acc + n);
Cevap
var sayilar = [1, 2, 3, 4];
var toplam = sayilar.fold(0, (acc, n) => acc + n);

Açıklama: fold başlangıç değeriyle indirir.

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