scala map iterator tuples iterable-unpacking

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}