Map
Coddy'nin Swift Journey'sinin Mantık ve Akış bölümünün bir parçası — ders 23 / 56.
map bir closure alır ve bunu her öğeye uygulayarak sonuçlardan oluşan yeni bir dizi döndürür. Yeni dizi, kaynakla aynı uzunluğa sahiptir.
let nums = [1, 2, 3, 4]
let doubled = nums.map { $0 * 2 }
print(doubled) // [2, 4, 6, 8]$0, closure'ın ilk parametresi için bir kısaltmadır. Daha uzun olan form, parametre adını ve dönüş türünü açıkça belirtir:
let doubled = nums.map { (n: Int) -> Int in
return n * 2
}map eleman türünü de değiştirebilir. Bir [Int] dizisini String döndüren bir closure aracılığıyla eşlemek size bir [String] verir:
let labels = nums.map { "#\($0)" }
print(labels) // ["#1", "#2", "#3", "#4"]Görev
KolayTek bir giriş satırı okuyun: virgülle ayrılmış tam sayılardan oluşan bir liste (Fahrenheit cinsinden sıcaklıklar).
Her birini C = (F - 32) * 5 / 9 formülünü kullanarak tam sayı aritmetiği ile (sıfıra doğru yuvarlayarak, ondalık basamak olmadan) Celsius'a dönüştürün. Ayrı satırlarda şunları yazdırın:
,ile birleştirilmiş Celsius sıcaklıkları- Her sıcaklık için
F=<f> C=<c>önekiyle oluşturulmuş,;ile birleştirilmiş etiketler
Her iki satır için de map kullanın.
32,212,98,0 girişi için çıktı şöyledir:
0,100,36,-17
F=32 C=0;F=212 C=100;F=98 C=36;F=0 C=-17Kopya kağıdı
map, her öğeye bir closure uygular ve aynı uzunlukta yeni bir dizi döndürür:
let nums = [1, 2, 3, 4]
let doubled = nums.map { $0 * 2 } // [2, 4, 6, 8]$0, closure'ın ilk parametresi için bir kısaltmadır. Açık form:
let doubled = nums.map { (n: Int) -> Int in
return n * 2
}map öğe türünü değiştirebilir (örneğin [Int] → [String]):
let labels = nums.map { "#\($0)" } // ["#1", "#2", "#3", "#4"]Kendin dene
let f = readLine()!.components(separatedBy: ",").map { Int($0)! }
// YAPILACAK: 1. satır = "," ile birleştirilmiş celsius değerleri
// YAPILACAK: 2. satır = ";" ile birleştirilmiş "F=<f> C=<c>" etiketleri
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
1Stringler Derinlemesine
Sayma ve İndekslerBüyük-Küçük Harf ve KırpmaStringlerde AramaBölme ve BirleştirmeAlt Stringleri DeğiştirmeÖzet - Kullanıcı Adı Kontrolü4Kümeler
Küme OluşturmaBirleşim ve KesişimFark ve Simetrik FarkAlt Küme ve Üst KümeÖzet - Etiket Filtresi7Proje - Alışkanlık Takibi
Projeye Genel BakışTamamlandı Olarak İşaretle10Proje - Quiz Motoru
Projeye Genel BakışSoruları Sorma2Aralıklar ve Adımlar
Kapalı ve Yarı AçıkStride (Adım)Aralık MetotlarıSwitch İçinde AralıklarÖzet - Takvim Izgarası5Yüksek Mertebeden Fonksiyonlar Bölüm 1
MapFilterReduceMap, filter, reduce zincirlemeÖzet - Kelime İstatistikleri