CompactMap y flatMap, ¿cuáles son las diferencias y ¿cuándo se usa cada uno? Swift 4.1 introdujo este nuevo método con la propuesta 0187: Introduce Filtermap para obtener más claridad en los casos de uso de mapas planos.

Utilice este método para recibir una matriz de valores no opcionales cuando su transformación produzca un valor opcional.

Arquitectura de aplicaciones SwiftUI con MVC y MVVM Aunque puede crear una aplicación simplemente juntando un poco de código, sin las mejores prácticas y una arquitectura robusta, pronto terminará con un código espagueti inmanejable. Aprende a crear aplicaciones sólidas y mantenibles con menos errores usando esta guía gratuita.

Vea las diferencias entre un mapa y un mapa compacto en el siguiente ejemplo:

Cuándo usar mapa plano

Use este método para recibir una colección de un solo nivel cuando su transformación produzca una secuencia o colección para cada elemento.

Vea la diferencia entre un mapa y un mapa plano en el siguiente ejemplo:

De hecho, s.flatMap(transform) es equivalente a Array(s.map(transform).joined()).

compactMap vs flatMap

La regla general aquí para recordarse a sí mismo al escribir código:

Utilizado en una secuencia y con una transformación que devuelve un valor opcional, use compactMap. Si no, map o flatMap le darán los resultados que necesita.

Arquitectura de aplicaciones SwiftUI con MVC y MVVM Aunque puede crear una aplicación simplemente juntando un poco de código, sin las mejores prácticas y una arquitectura robusta, pronto terminará con un código espagueti inmanejable. Aprende a crear aplicaciones sólidas y mantenibles con menos errores usando esta guía gratuita.

La razón para nombrarlo compactMap

Aunque algunos propusieron introducir filterMap como nombre del método, el equipo de Swift decidió optar por compactMap en su lugar. Leer sus motivaciones aclara mucho las cosas y explica la funcionalidad del método también.

«filterMap» es un nombre con algunos precedentes en otros lenguajes de programación, especialmente en los funcionales, pero algunas personas sentían firmemente que el nombre era engañoso porque, como una operación combinada, no era un filtro o un mapa. De las alternativas, la que tenía el soporte más fuerte parecía ser «compactMap», que se basa en el precedente de» compact», una operación de otros lenguajes (especialmente Ruby) que devuelve una copia de la entrada sin valores nil. Swift no tiene actualmente una operación de este tipo, y de hecho no es posible expresarla; sin embargo, el equipo central está de acuerdo en que sería una operación razonable agregar, y que «compactMap» es un buen nombre para la operación.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.