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"]Défi
FacileLisez 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 :
- Les températures en Celsius, jointes avec
, - 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=-17Aide-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 ";"
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
1Les chaînes de caractères en profondeur
Comptage et indicesCasse et nettoyageRecherche dans les chaînesDécoupage et jointureRemplacement de sous-chaînesRécapitulatif - Vérification du nom d'utilisateur4Ensembles
Création d'ensemblesUnion et intersectionSoustraction et différence symétriqueSous-ensemble et sur-ensembleRécapitulatif - Filtre de tags7Projet - Suivi d'habitudes
Aperçu du projetMarquer comme terminé10Projet - Moteur de quiz
Présentation du projetPoser des questions2Intervalles et Pas
Fermé vs Semi-ouvertLe PasMéthodes d'intervalleIntervalles dans un SwitchRécapitulatif - Grille de calendrier5Fonctions d'ordre supérieur, Partie 1
MapFilterReduceChaînage de map, filter, reduceRécapitulatif - Statistiques de mots