0Pricing
Swift Academy · Ders

reduce ve reduce(into:)

Koleksiyonları tek bir değerde toplayın.

reduce ve reduce(into:), CoddyKit'te ücretsiz bir Swift Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Swift Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Swift Academy kursu toplamda 4 dersten oluşur.

İndirgeme Nedir?

reduce, bir biriktiriciyi her öğeyle tekrar tekrar birleştirerek bir dizinin tamamını tek bir değere indirger.

  • Bir başlangıç değeri verirsiniz
  • Ayrıca (accumulator, element) -> accumulator biçiminde bir kapanış verirsiniz

İndirgeyerek Toplama

Klasik örnek — her şeyi toplayın:

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

İşleç Kısaltması

Kapanış yalnızca bir işleçten oluşuyorsa işleç işlevini doğrudan geçirebilirsiniz:

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

Farklı Bir Türe İndirgeme

Sonuç türü, öğe türünden farklı olabilir:

let words = ["a", "b", "c"]
let joined = words.reduce("") { $0 + $1.uppercased() }
print(joined)  // "ABC"

İndirgeyerek En Büyük Değeri Bulma

Toplamların ötesinde başka toplu değerler de hesaplayabilirsiniz:

let nums = [3, 9, 2, 7]
let maxVal = nums.reduce(Int.min) { max($0, $1) }
print(maxVal)  // 9

İndirgemenin Maliyeti

Standart reduce, her adımda yepyeni bir biriktirici oluşturur. String veya Array gibi değer türlerinde bu, her öğede biriktiricinin tamamının kopyalanması anlamına gelir — büyük girdiler için O(n²) işlem.

Yerinde İndirgemenin Kullanımı

reduce(into:), biriktiriciyi inout parametresi olarak geçirir; böylece kopyalamak yerine onu yerinde değiştirirsiniz:

let nums = [1, 2, 2, 3, 3, 3]
let counts = nums.reduce(into: [Int: Int]()) { dict, n in
    dict[n, default: 0] += 1
}
print(counts)  // [1: 1, 2: 2, 3: 3]

Diziyi Verimli Şekilde Oluşturma

Bir koleksiyonda biriktirme sırasında yerinde indirgeme özellikle kullanışlıdır:

let nums = [1, 2, 3, 4, 5]
let evensSquared = nums.reduce(into: [Int]()) { result, n in
    if n % 2 == 0 { result.append(n * n) }
}
print(evensSquared)  // [4, 16]

İndirgeme ve Yerinde İndirgeme

Sonuç aynı, performans özellikleri farklıdır:

let parts = ["a", "b", "c"]
let a = parts.reduce("") { $0 + $1 }            // copies each step
let b = parts.reduce(into: "") { $0 += $1 }    // mutates in place
print(a, b)  // abc abc

Yerinde İndirge ile Gruplama

Sık kullanılan bir kalıp: öğeleri bir anahtara göre gruplara ayırmak:

let names = ["Ann", "Al", "Bo", "Cy"]
let byInitial = names.reduce(into: [Character: [String]]()) { dict, name in
    dict[name.first!, default: []].append(name)
}
print(byInitial[Character("A")]!)  // ["Ann", "Al"]

İkisi Arasında Seçim

Ucuz skaler biriktiriciler (tamsayılar ve ondalık sayılar) için reduce kullanın. Biriktirici bir koleksiyon veya başka bir büyük değer türüyse kopyaları önlemek için reduce(into:) kullanın.

let nums = [1, 2, 3]
print(nums.reduce(0, +))                          // scalar: plain reduce
print(nums.reduce(into: Set<Int>()) { $0.insert($1) }) // collection: into

Hızlı Kontrol

Bir sözlük veya dizi oluştururken neden reduce(into:) tercih edilmelidir?

Özet

İndirgemenin temellerini öğrendiniz:

  • reduce(initial) { acc, x in ... }, bir diziyi tek bir değere indirger
  • İşleç kısaltması: reduce(0, +)
  • reduce(into:), bir inout biriktiriciyi değiştirir — koleksiyonlar için kullanın
  • Sayımlar, gruplama ve birleştirme için idealdir

Sırada flatMap ve zincirleme var.

Sıkça Sorulan Sorular

“reduce ve reduce(into:)” dersi ücretsiz mi?

Evet — “reduce ve reduce(into:)” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Swift Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Swift Academy kursu toplamda 4 dersten oluşur.

“reduce ve reduce(into:)” dersinde ne öğreneceğim?

Koleksiyonları tek bir değerde toplayın. Swift Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Swift Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Swift Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“reduce ve reduce(into:)” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Swift Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Swift Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. map ve compactMap
  2. filter ve Koşul Belirteçleri
  3. reduce ve reduce(into:)
  4. flatMap ve Zincirleme
← Swift Academy Sayfasına Dön