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 BuilderEntraînez-vous par vous-même : Playground Swift