Map
Parte de la sección Lógica y Flujo del Journey de Swift de Coddy — lección 23 de 56.
map toma una clausura y la aplica a cada elemento, devolviendo un nuevo arreglo con los resultados. El nuevo arreglo tiene la misma longitud que el original.
let nums = [1, 2, 3, 4]
let doubled = nums.map { $0 * 2 }
print(doubled) // [2, 4, 6, 8]$0 es una abreviatura para el primer parámetro del closure. La forma extendida especifica el nombre del parámetro y el tipo de retorno:
let doubled = nums.map { (n: Int) -> Int in
return n * 2
}map también puede cambiar el tipo de elemento. Mapear un [Int] a través de una clausura que devuelve String te da un [String]:
let labels = nums.map { "#\($0)" }
print(labels) // ["#1", "#2", "#3", "#4"]Desafío
FácilLee una sola línea de entrada: una lista de enteros separados por comas (temperaturas en Fahrenheit).
Convierte cada una a Celsius usando la fórmula C = (F - 32) * 5 / 9 en aritmética de enteros (trunca hacia cero, sin decimales). Imprime, en líneas separadas:
- Las temperaturas en Celsius, unidas con
, - Una etiqueta por temperatura con el prefijo
F=<f> C=<c>, unidas con;
Usa map para ambas líneas.
Para la entrada 32,212,98,0, la salida es:
0,100,36,-17
F=32 C=0;F=212 C=100;F=98 C=36;F=0 C=-17Hoja de referencia
map aplica una clausura a cada elemento y devuelve un nuevo array de la misma longitud:
let nums = [1, 2, 3, 4]
let doubled = nums.map { $0 * 2 } // [2, 4, 6, 8]$0 es una abreviatura para el primer parámetro de la clausura. Forma explícita:
let doubled = nums.map { (n: Int) -> Int in
return n * 2
}map puede cambiar el tipo de elemento (por ejemplo, [Int] → [String]):
let labels = nums.map { "#\($0)" } // ["#1", "#2", "#3", "#4"]Pruébalo tú mismo
let f = readLine()!.components(separatedBy: ",").map { Int($0)! }
// TODO: línea 1 = celsius unidos con ","
// TODO: línea 2 = etiquetas "F=<f> C=<c>" unidas con ";"
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
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 palabras