map ve compactMap
Ögeleri dönüştürün ve nil değerlerini ayıklayın.
map ve compactMap, CoddyKit'te ücretsiz bir Swift Academy dersidir. Bu, 4 dersinin 1. 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.
Eşleme Nedir?
map, üst düzey bir işlevdir: bir kapanış alır ve bunu bir dizinin her öğesine uygulayarak dönüştürülmüş sonuçlardan yeni bir dizi döndürür.
- Özgün koleksiyon asla değiştirilmez
- Sonuçtaki öğe sayısı her zaman girdi sayısına eşittir
- Öğe türü değişebilir (ör.
Int→String)
Basit Eşleme
Dizideki her sayıyı iki katına çıkarma:
let numbers = [1, 2, 3, 4]
let doubled = numbers.map { $0 * 2 }
print(doubled) // [2, 4, 6, 8]Öğe Türünü Değiştirme
Eşleme, Int değerlerini String değerlerine dönüştürebilir:
let ids = [10, 20, 30]
let labels = ids.map { "ID-\($0)" }
print(labels) // ["ID-10", "ID-20", "ID-30"]Adlandırılmış İşlevle Eşleme
Yalnızca sondaki kapanışla sınırlı kalmadan, eşleşen imzaya sahip herhangi bir işlevi geçirebilirsiniz:
let words = ["swift", "map"]
let upper = words.map { $0.uppercased() }
print(upper) // ["SWIFT", "MAP"]Eşlemenin Çözemediği Sorun
Eşleme her öğeyi korur. Dönüşümünüz isteğe bağlı bir değer döndürüyorsa (başarısız olabilir), [Int?] gibi isteğe bağlı değerlerden oluşan ve daha sonra filtrelemeniz gereken nil boşluklarıyla dolu bir dizi elde edersiniz.
compactMap tam olarak bu sorunu çözer.
compactMap İş Başında
compactMap her öğeyi dönüştürür ve sonucu nil olanları çıkararak isteğe bağlı olmayan bir dizi döndürür:
let raw = ["1", "2", "x", "4"]
let nums = raw.compactMap { Int($0) }
print(nums) // [1, 2, 4] -- "x" was droppedEşleme ve compactMap Yan Yana
Fark, boş sonuçların korunup korunmamasıdır:
let raw = ["1", "x", "3"]
print(raw.map { Int($0) }) // [Optional(1), nil, Optional(3)]
print(raw.compactMap { Int($0) }) // [1, 3]Koleksiyondaki İsteğe Bağlı Değerleri Açma
compactMap, isteğe bağlı değerlerden oluşan bir diziden boş değerleri çıkarmanın deyimsel yoludur:
let maybe: [Int?] = [1, nil, 3, nil, 5]
let clean = maybe.compactMap { $0 }
print(clean) // [1, 3, 5]compactMap ile Ayrıştırma
Yaygın bir gerçek kullanım: girdinin yalnızca geçerli satırlarını ayrıştırmak:
let lines = ["42", "", "hello", "7"]
let values = lines.compactMap { Int($0) }
print(values) // [42, 7]
print(values.reduce(0, +)) // 49Eşleme ve compactMap'i Birleştirme
İşlemleri zincirleyebilirsiniz: veriyi biçimlendirmek için map, yalnızca başarılı sonuçları tutmak için compactMap kullanın:
let scores = ["90", "85", "n/a", "70"]
let passed = scores
.compactMap { Int($0) }
.map { $0 >= 80 ? "pass" : "fail" }
print(passed) // ["pass", "pass", "fail"]İsteğe Bağlı Zincirlerde compactMap
İsteğe bağlı özellik erişimiyle de mükemmel biçimde çalışır:
struct User { let name: String? }
let users = [User(name: "Ann"), User(name: nil), User(name: "Bo")]
let names = users.compactMap { $0.name }
print(names) // ["Ann", "Bo"]Hızlı Kontrol
Öğeleri dönüştürüp boş sonuçları tek adımda kaldıran işlev hangisidir?
Özet
Temel iki dönüştürme işlevini öğrendiniz:
map— her öğeyi dönüştürür, sonuçtaki öğe sayısı girdi sayısına eşittircompactMap— dönüştürür venilsonuçlarını atar; ayrıştırma ve isteğe bağlı değerleri açma için idealdir- Her ikisi de yeni diziler döndürür ve kaynak diziyi asla değiştirmez
- Veriyi önce biçimlendirip sonra temiz biçimde filtrelemek için bunları zincirleyebilirsiniz
Sırada koşullarla filtreleme var.
Sıkça Sorulan Sorular
“map ve compactMap” dersi ücretsiz mi?
Evet — “map ve compactMap” 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.
“map ve compactMap” dersinde ne öğreneceğim?
Ögeleri dönüştürün ve nil değerlerini ayıklayı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 1. dersidir.
“map ve compactMap” 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.