Saltar al contenido

¿Aplanar una lista de tuplas en Scala?

Este team especializado luego de varios días de investigación y recopilación de de información, hemos dado con la respuesta, esperamos que resulte de gran utilidad para tu trabajo.

Solución:

Si no se puede encontrar la conversión implícita, puede proporcionarla explícitamente.

pq.flatten case (a,b) => List(a,b)

Si esto se hace varias veces a lo largo del código, puede ahorrar algo de texto modelo haciéndolo implícito.

scala> import scala.language.implicitConversions
import scala.language.implicitConversions

scala> implicit def flatTup[T](t:(T,T)): List[T]= t match case (a,b)=>List(a,b)
flatTup: [T](t: (T, T))List[T]

scala> pq.flatten
res179: List[Char] = List(a, p, b, q, c, r, d, s, e, t)

La respuesta de jwvh cubre perfectamente la solución de “codificación” para su problema, por lo que no voy a entrar en más detalles al respecto. Lo único que quería agregar era aclarar por qué la solución que tanto usted como jwvh encontraron es necesaria.

Como se indica en la biblioteca de Scala, Tuple2 (cual (,) se traduce como) es:

Una tupla de 2 elementos; la representación canónica de un Product2.

Y siguiendo con eso:

Product2 es un producto cartesiano de 2 componentes.

…Lo que significa que Tuple2[T1,T2] representa:

El conjunto de todos los posibles pares de elementos cuyos componentes son miembros de dos conjuntos (todos los elementos en T1 y T2 respectivamente).

A List[T]por otro lado, representa una colección ordenada de T elementos.

Lo que todo esto significa en la práctica es que no hay una forma absoluta de traducir cualquier posible Tuple2[T1,T2] a un List[T]simplemente porque T1 y T2 podría ser diferente. Por ejemplo, tome la siguiente tupla:

val tuple = ("hi", 5)

¿Cómo podría aplanarse tal tupla? Si el 5 hacerse un String? O tal vez simplemente aplanar a un List[Any]? Si bien ambas soluciones podrían usarse, son trabajando alrededor del sistema de tipospor lo que no están codificados en el Tuple API por diseño.

Todo esto se reduce al hecho de que no hay una vista implícita predeterminada para este caso y debe proporcionar una usted mismo, ya que ambos jwvh y ya te diste cuenta.

Si conservas algún reparo y disposición de mejorar nuestro sección te proponemos dejar una referencia y con gusto lo ojearemos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *