# Obtener resultado en List[(Char, Int)] en lugar de List[Product]

I'm trying out the following piece of code in Scala REPL,

``````val a = List(('a',4),('b',8))
val z = ('a',1)
a map (x => if (x._1 == z._1) (x._1, x._2 - z._2) else (z :: a))
``````

Obtengo el siguiente resultado: `List[Product] = List((a,3), List((a,1), (a,4), (b,8)))`

Why am I getting output in `List[Product]` ?

What should I do to get the resultant type of the output be `List[(Char, Int)]` en lugar de `List[Product]`

preguntado el 05 de mayo de 13 a las 21:05

Isn't double-nested lists and `List[(Char, Int)]` at the same time oxymorons? -

Which result do you want to have in concrete, given your values? Note that the if-part and the else part don't match in the returned type. Either you return a new pair, or a List of pairs. -

## 1 Respuestas

You are applying a function to every element in the list `"a"`

In the first iteration you take `(a,4)` and in this case you are applying a function that substract 1 to the second element of the tuple.

El resultado es `(a,3)`

But in the second element you are using cons operator to "a" so the result of this operation is a new inmmutable list.

``````('a',1) :: List(('a',4),('b',8)) === List((a,1), (a,4), (b,8))
``````

IMO what you want as result is:

``````List(('a',3),('b',8))
``````

Eso se puede lograr así:

``````a.map {
case (z._1, x) => (z._1, x - z._2)
case x => x
}
``````

Respondido el 08 de Septiembre de 13 a las 11:09

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.