If applying map
method to a list of tuple in Scala, it complains error as below:
scala> val s = List((1,2), (3,4))
s: List[(Int, Int)] = List((1,2), (3,4))
scala> s.map((a,b) => a+b)
<console>:13: error: missing parameter type
Note: The expected type requires a one-argument function accepting a 2-Tuple.
Consider a pattern matching anonymous function, `{ case (a, b) => ... }`
s.map((a,b) => a+b)
^
<console>:13: error: missing parameter type
s.map((a,b) => a+b)
But if I apply similar map
method to list of Int, it works fine:
scala> val t = List(1,2,3)
t: List[Int] = List(1, 2, 3)
scala> t.map(a => a+1)
res14: List[Int] = List(2, 3, 4)
Anyone knows why it is? Thanks.
In Scala, you can convert a list to a map in Scala using the toMap method. A map contains a set of values i.e. key-> value but a list contains single values. So, while converting a list to map we have two ways, Add index to list.
One of the most important differences between a list and a tuple is that list is mutable, whereas a tuple is immutable.
In Scala, a tuple is a value that contains a fixed number of elements, each with its own type. Tuples are immutable.
Scala dosen't deconstruct tuples automatically. You'll need to either use curly brackets:
val s = List((1,2), (3,4))
val result = s.map { case (a, b) => a + b }
Or use a single parameter of type tuple:
val s = List((1,2), (3,4))
val result = s.map(x => x._1 + x._2)
Dotty (the future Scala compiler) will bring automatic deconstruction of tuples.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With