Récapitulatif - Pipeline Builder
Fait partie de la section Logique et Flux du Journey Swift de Coddy — leçon 43 sur 56.
Défi
MoyenConstruisez un petit pipeline de données piloté par des fermetures (closures).
Lisez trois lignes :
- Un entier
min - Un entier
scale - Une liste d'entiers séparés par des virgules
Définissez deux fabriques de fermetures :
makeFilter(min: Int) -> (Int) -> Boolcaptureminet renvoie un prédicatn > minmakeScaler(by: Int) -> (Int) -> Intcapturebyet renvoie une fonction qui multiplie par celui-ci
Ensuite, définissez une fonction pipeline(_ nums: [Int], filter: (Int) -> Bool, transform: (Int) -> Int) -> [Int] qui filtre d'abord, puis transforme.
Affichez trois lignes :
- Les nombres qui ont survécu au filtre, joints par
, - Les mêmes nombres après mise à l'échelle, joints par
, - La somme des valeurs mises à l'échelle
Pour l'entrée 5 / 3 / 2,7,3,8,9, la sortie est :
7,8,9
21,24,27
72Essayez vous-même
let minVal = Int(readLine()!)!
let scale = Int(readLine()!)!
let nums = readLine()!.components(separatedBy: ",").map { Int($0)! }
// TODO: makeFilter / makeScaler retournant des fermetures (closures) ; pipeline(_:filter:transform:) ;
// ensuite afficher les éléments filtrés, mis à l'échelle, et la somme de ceux mis à l'échelle
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 mots8Closures
Les bases des closuresClosures finalesCapture de valeursRetourner des closuresOrdre supérieur personnaliséRécapitulatif - Pipeline Builder