0Pricing
Swift Academy · Ders

Tembel map ve filter

Ara diziler oluşturmadan tembel dönüşümleri zincirleyin.

Tembel map ve filter, CoddyKit'te ücretsiz bir Swift Academy dersidir. Bu, 4 dersinin 2. 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.

Ara Diziler

Hemen çalışan zincirler her adım arasında yeni bir dizi için bellek ayırır. Büyük bir dizi üzerinde filter().map() kullanmak, yalnızca birkaç öğe isteyebileceğiniz hâlde iki eksiksiz dizi oluşturur.

Hemen Çalışan Bellek Ayırma

Burada iki ara dizi oluşturulur:

let nums = Array(1...6)
let result = nums
    .filter { $0 % 2 == 0 }  // builds [2, 4, 6]
    .map { $0 * 10 }         // builds [20, 40, 60]
print(result)  // [20, 40, 60]

Adımları Gecikmeli İşlemle Birleştirme

Gecikmeli zincir işlemleri birleştirir: sonraki öğe başlamadan önce her öğe tüm adımlardan geçer, bu nedenle hiçbir ara dizi için bellek ayrılmaz.

Gecikmeli Zincir

Aynı mantık, sıfır ara dizi:

let nums = Array(1...6)
let result = nums.lazy
    .filter { $0 % 2 == 0 }
    .map { $0 * 10 }
print(Array(result))  // [20, 40, 60]

Öğe Öğe Akış

İzleme, aşama aşama yürütme yerine iç içe geçmiş yürütmeyi gösterir:

let out = [1, 2, 3].lazy
    .filter { n -> Bool in print("filter \(n)"); return n > 1 }
    .map   { n -> Int  in print("map \(n)");    return n }
print(Array(out))  // filter 1, filter 2, map 2, filter 3, map 3 -> [2, 3]

Erken Çıkış İş Yükünü Azaltır

En kısa sürede durmak için gecikmeli zinciri first(where:) ile birleştirin:

let nums = Array(1...1_000_000)
let hit = nums.lazy.map { $0 + 1 }.first { $0 > 5 }
print(hit!)  // 6  -- only a handful of elements processed

prefix ile Gecikmeli İşlem

Pahalı bir dönüşümün yalnızca ilk birkaç sonucunu alın:

let squares = (1...).lazy.map { $0 * $0 }
print(Array(squares.prefix(5)))  // [1, 4, 9, 16, 25]

Atlanan İşi Sayma

Bir sayaç, kaç öğenin işlendiğini kanıtlar:

var transforms = 0
let result = Array(1...100).lazy
    .map { (n: Int) -> Int in transforms += 1; return n * 2 }
    .prefix(3)
_ = Array(result)
print(transforms)  // 3, not 100

Gecikmeli compactMap

compactMap'in de gecikmeli bir biçimi vardır:

let raw = ["1", "x", "3", "y", "5"]
let first = raw.lazy.compactMap { Int($0) }.first
print(first!)  // 1

Birçok Adımı Birleştirme

Uzun birleştirilmiş veri hatları somutlaştırılana kadar bellek ayırmadan kalır:

let r = Array(1...20).lazy
    .filter { $0 % 2 == 0 }
    .map { $0 * $0 }
    .filter { $0 > 50 }
print(Array(r))  // [64, 100, 144, 196, 256, 324, 400]

Birleştirmenin En Çok Yararlı Olduğu Durum

Gecikmeli birleştirme, kaynak büyük olduğunda ve sonucun yalnızca bir bölümünü tuttuğunuzda avantaj sağlar. Sonuçta her şeyi bir diziye dönüştürerek tüketiyorsanız tasarruf azalır ve hemen çalışan yaklaşım daha okunaklı olabilir.

let big = Array(1...10_000)
let sample = Array(big.lazy.filter { $0 % 1000 == 0 })
print(sample)  // [1000, 2000, ... 10000]

Hızlı Kontrol

Gecikmeli bir filter().map() zinciri, hemen çalışan zincirin oluşturduğu neyi önler?

Özet

Gecikmeli zincirleri öğrendiniz:

  • Hemen çalışan zincirler her adım arasında bir dizi için bellek ayırır
  • .lazy, adımları birleştirir — öğe öğe çalışır ve ara sonuç oluşturmaz
  • Erken çıkış için first(where:) ve prefix ile mükemmel uyum sağlar
  • En büyük avantaj: büyük kaynak, kısmi tüketim

Sırada gecikmeli ve hemen çalışan yaklaşımların karşılaştırılması var.

Sıkça Sorulan Sorular

“Tembel map ve filter” dersi ücretsiz mi?

Evet — “Tembel map ve filter” 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.

“Tembel map ve filter” dersinde ne öğreneceğim?

Ara diziler oluşturmadan tembel dönüşümleri zincirleyin. 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 2. dersidir.

“Tembel map ve filter” 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. lazy Özelliği
  2. Tembel map ve filter
  3. Tembel ve Açgözlü İşlemlerin Dengesi
  4. Özel Tembel Diziler Oluşturma
← Swift Academy Sayfasına Dön