scala - Tuple Desempaquetado en Operaciones de Mapa
iterator tuples (4)
Me gusta la función tupled; es conveniente y no menos importante, escriba safe:
import Function.tupled
arrayOfTuples map tupled { (e1, e2) => e1.toString + e2 }
Con frecuencia me encuentro trabajando con Listas, Seqs e Iteradores de Tuples y me gustaría hacer algo como lo siguiente:
val arrayOfTuples = List((1, "Two"), (3, "Four"))
arrayOfTuples.map { (e1: Int, e2: String) => e1.toString + e2 }
Sin embargo, el compilador nunca parece estar de acuerdo con esta sintaxis. En cambio, termino escribiendo,
arrayOfTuples.map {
t =>
val e1 = t._1
val e2 = t._2
e1.toString + e2
}
Lo cual es tonto. ¿Cómo puedo evitar esto?
Otra opción es
arrayOfTuples.map {
t =>
val (e1,e2) = t
e1.toString + e2
}
Por qué no usas
arrayOfTuples.map {t => t._1.toString + t._2 }
Si necesita los parámetros varias veces, o diferente orden, o en una estructura anidada, donde _ no funciona,
arrayOfTuples map {case (i, s) => i.toString + s}
parece ser una forma corta, pero legible.
Una solución alternativa es usar el case
:
arrayOfTuples map {case (e1: Int, e2: String) => e1.toString + e2}