Thursday, June 12, 2014

Scala Tips - List

http://stackoverflow.com/questions/8601041/simplest-way-to-sum-two-lists-in-scala

I want to sum each element in list A with the element in list B, producing a new list.


// Poor
List(1,2).zip(List(5,5)).map(t => t._1 + t._2)
// Great
For two lists:
(List(1,2), List(5,5)).zipped.map(_ + _)
For three lists:
(List(1,2), List(5,5), List(9, 4)).zipped.map(_ + _ + _)
For n lists:
List(List(1, 2), List(5, 5), List(9, 4), List(6, 3)).transpose.map(_.sum)
// Great
you could even improve your snippet to get rid of using the clumsy _1, _2:
List(1,2) zip List(5,5) map { case (a, b) => a + b }

No comments: