Tuple Unpacking in Map Operations

duckworthd picture duckworthd · Aug 2, 2011 · Viewed 38.9k times · Source

I frequently find myself working with Lists, Seqs, and Iterators of Tuples and would like to do something like the following,

val arrayOfTuples = List((1, "Two"), (3, "Four"))
arrayOfTuples.map { (e1: Int, e2: String) => e1.toString + e2 }

However, the compiler never seems to agree with this syntax. Instead, I end up writing,

arrayOfTuples.map { 
    t => 
    val e1 = t._1
    val e2 = t._2
    e1.toString + e2 
}

Which is just silly. How can I get around this?

Answer

Nicolas picture Nicolas · Aug 2, 2011

A work around is to use case :

arrayOfTuples map {case (e1: Int, e2: String) => e1.toString + e2}