Resumen - Pipeline Builder
Parte de la sección Lógica y Flujo del Journey de Swift de Coddy — lección 43 de 56.
Desafío
IntermedioConstruye una pequeña canalización de datos (pipeline) impulsada por clausuras (closures).
Lee tres líneas:
- Un entero
min - Un entero
scale - Una lista de enteros separados por comas
Define dos fábricas de clausuras:
makeFilter(min: Int) -> (Int) -> Boolcapturaminy devuelve un predicadon > minmakeScaler(by: Int) -> (Int) -> Intcapturabyy devuelve una función que multiplica por él
Luego define una función pipeline(_ nums: [Int], filter: (Int) -> Bool, transform: (Int) -> Int) -> [Int] que primero filtra y luego transforma.
Imprime tres líneas:
- Los números que sobrevivieron al filtro, unidos con
, - Los mismos números después de la escala, unidos con
, - La suma de los valores escalados
Para la entrada 5 / 3 / 2,7,3,8,9, la salida es:
7,8,9
21,24,27
72Pruébalo tú mismo
let minVal = Int(readLine()!)!
let scale = Int(readLine()!)!
let nums = readLine()!.components(separatedBy: ",").map { Int($0)! }
// TODO: makeFilter / makeScaler que devuelvan clausuras; pipeline(_:filter:transform:);
// luego imprimir los filtrados, los escalados y la suma de los escalados
Todas las lecciones de Lógica y Flujo
1Strings a fondo
Conteo e índicesMayúsculas, minúsculas y TrimBúsqueda en StringsDividir y unirReemplazo de subcadenasResumen: Validación de usuario4Conjuntos
Crear conjuntosUnión e intersecciónResta y diferencia simétricaSubconjunto y superconjuntoResumen - Filtro de etiquetas7Proyecto - Seguimiento de hábitos
Descripción general del proyectoMarcar como completado10Proyecto - Motor de cuestionarios
Descripción general del proyectoHacer preguntas2Rangos e Intervalos
Cerrados vs. SemiabiertosSaltos (Stride)Métodos de RangosRangos en SwitchResumen - Cuadrícula de calendario5Funciones de orden superior Pt. 1
MapFilterReduceEncadenar map, filter, reduceResumen - Estadísticas de palabras8Closures
Conceptos básicos de ClosuresTrailing ClosuresCaptura de valoresRetorno de ClosuresOrden superior personalizadoResumen - Pipeline Builder