Menu
Coddy logo textTech

Reduce

Coddy'nin Swift Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 25 / 56.

reduce tüm bir diziyi tek bir değere indirger. Bu yöntemle toplama, çarpma yapabilir, bir uç değeri bulabilir veya birçok öğeden yeni bir dize ya da dizi oluşturabilirsiniz.

let total = [1, 2, 3, 4].reduce(0) { acc, n in acc + n }
print(total)                       // 10

İlk argüman başlangıç akümülatörüdür. Closure, mevcut akümülatörü ve bir sonraki öğeyi alır ve yeni akümülatörü döndürür. Akümülatörün son değeri sonuçtur.

Aritmetik operatörler için Swift size sembol tabanlı kısayolu sunar:

[1, 2, 3, 4].reduce(0, +)              // 10
[1, 2, 3, 4].reduce(1, *)              // 24

reduce bir sayı döndürmek zorunda değildir. Biriktirici (accumulator) herhangi bir türde olabilir, siz karar verirsiniz:

let sentence = ["hi", "there"].reduce("") { $0 + $1 + "!" }
print(sentence)                    // "hi!there!"
challenge icon

Görev

Kolay

Girdiden virgülle ayrılmış bir tamsayı listesi içeren tek bir satır okuyun. Her biri için reduce kullanarak üç satır yazdırın:

  1. Toplam
  2. Çarpım
  3. Maksimum değer (iki bağımsız değişkenden büyük olanı döndüren bir closure kullanın, .max() çağırmayın)

En az bir öğe olduğunu varsayın. Maksimum değer için başlangıç biriktiricisi olarak nums[0] kullanabilir ve dizinin geri kalanını azaltabilirsiniz.

3,7,2,8,4 girdisi için çıktı şöyledir:

24
1344
8

Kendin dene

let nums = readLine()!.components(separatedBy: ",").map { Int($0)! }

// YAPILACAK: reduce kullanarak toplam, çarpım ve maksimum değerleri bul
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Mantık ve Akış bölümündeki tüm dersler

Kendi başına pratik yap: Swift playground