Menu
Coddy logo textTech

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"]
challenge icon

Görev

Kolay

Tek 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:

  1. , ile birleştirilmiş Celsius sıcaklıkları
  2. 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=-17

Kopya 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
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