Menu
Coddy logo textTech

Map

Fait partie de la section Logique et Flux du Journey Swift de Coddy — leçon 23 sur 56.

map prend une closure et l'applique à chaque élément, retournant un nouveau tableau contenant les résultats. Le nouveau tableau a la même longueur que la source.

let nums = [1, 2, 3, 4]
let doubled = nums.map { $0 * 2 }
print(doubled)               // [2, 4, 6, 8]

$0 est un raccourci pour le premier paramètre de la fermeture. La forme longue précise le nom du paramètre et le type de retour :

let doubled = nums.map { (n: Int) -> Int in
    return n * 2
}

map peut également changer le type d'élément. Mapper un [Int] via une closure qui renvoie un String vous donne un [String] :

let labels = nums.map { "#\($0)" }
print(labels)                // ["#1", "#2", "#3", "#4"]
challenge icon

Défi

Facile

Lisez une seule ligne d'entrée : une liste d'entiers séparés par des virgules (températures en Fahrenheit).

Convertissez chacun d'eux en Celsius en utilisant la formule C = (F - 32) * 5 / 9 en arithmétique entière (tronquer vers zéro, pas de décimales). Affichez, sur des lignes séparées :

  1. Les températures en Celsius, jointes avec ,
  2. Une étiquette par température avec le préfixe F=<f> C=<c>, jointes avec ;

Utilisez map pour les deux lignes.

Pour l'entrée 32,212,98,0, la sortie est :

0,100,36,-17
F=32 C=0;F=212 C=100;F=98 C=36;F=0 C=-17

Aide-mémoire

map applique une fermeture à chaque élément et retourne un nouveau tableau de la même longueur :

let nums = [1, 2, 3, 4]
let doubled = nums.map { $0 * 2 }  // [2, 4, 6, 8]

$0 est un raccourci pour le premier paramètre de la fermeture. Forme explicite :

let doubled = nums.map { (n: Int) -> Int in
    return n * 2
}

map peut changer le type d'élément (par ex. [Int][String]) :

let labels = nums.map { "#\($0)" }  // ["#1", "#2", "#3", "#4"]

Essayez vous-même

let f = readLine()!.components(separatedBy: ",").map { Int($0)! }

// TODO: ligne 1 = celsius joints avec ","
// TODO: ligne 2 = étiquettes "F=<f> C=<c>" jointes avec ";"
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Logique et Flux