Filter
Fait partie de la section Logique et Flux du Journey Swift de Coddy. Leçon 24 sur 56.
filter prend une closure de prédicat et renvoie un nouveau tableau contenant uniquement les éléments pour lesquels la closure a renvoyé true.
let nums = [1, 2, 3, 4, 5, 6]
let evens = nums.filter { $0 % 2 == 0 }
print(evens) // [2, 4, 6]Le résultat conserve l'ordre d'origine. Le type du résultat correspond au type d'entrée, aucune transformation n'a lieu, seulement une sélection.
filter s'enchaîne naturellement avec map :
let big = nums
.filter { $0 > 2 }
.map { $0 * $0 }
print(big) // [9, 16, 25, 36]Lisez chaque chaîne de haut en bas, tout comme un pipeline. Chaque étape produit un nouveau tableau ; rien ne modifie l'original.
Défi
FacileLisez deux lignes d'entrée :
- Une liste d'entiers séparés par des virgules
- Un entier
min
Affichez, sur des lignes séparées :
- Les entiers strictement supérieurs à
min, joints par,(ou vide si aucun ne correspond) - Les carrés des entiers correspondants, joints par
, - Le nombre d'entiers correspondants
Utilisez filter + map en chaîne. Ne faites pas deux itérations sur l'entrée.
Pour l'entrée 1,5,2,8,3,7 sur la ligne 1 et 4 sur la ligne 2, la sortie est :
5,8,7
25,64,49
3Essayez vous-même
let nums = readLine()!.components(separatedBy: ",").map { Int($0)! }
let min = Int(readLine()!)!
// TODO: filtrer > min une fois, puis mapper vers les carrés ; imprimer les deux, puis compter
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 motsEntraînez-vous par vous-même : Playground Swift