map, filter, reduce en Swift
El trío funcional, más compactMap para los fallos.
let legTimes = [512.0, 448.5, 630.0, 505.25]
// map transforms, filter keeps, reduce folds.
let minutes = legTimes.map { $0 / 60 }
print(minutes)
let quickLegs = legTimes.filter { $0 < 520 }
print("Quick legs: \(quickLegs.count)")
let total = legTimes.reduce(0, +)
print("Race time: \(total) s")
// compactMap drops the misses while transforming.
let logged = ["512", "n/a", "448"]
let parsed = logged.compactMap { Double($0) }
print("Parsed \(parsed.count) of \(logged.count)")
Cómo funciona
maptransforma cada elemento en un arreglo nuevo.filterconserva por predicado;reduce(0, +)pliega.compactMap { Double($0) }transforma y suelta los nil.
Palabras clave y builtins usados aquí
Doublecountfilterletmapprintreduce
El intento, en números
- Líneas
- 16
- Caracteres a escribir
- 482
- Tokens
- 119
- Ritmo de tres estrellas
- 70 tpm
Al ritmo de tres estrellas de 70 tokens por minuto, este intento toma unos 102 segundos.
Paso 3 de 3 en Funciones y clausuras; paso 9 de 27 en Fundamentos del lenguaje.