Maps are a powerful tool in Scala, allowing you to apply a function to each item in a collection; however they sometimes can be a bit difficult to understand, especially for programmers who are new to Scala or functional programming in general.
As mentioned previously, one of the strength of Scala lies in the fact that it allows different solutions to the same problem. For example, given we have a list of Strings and want to transform each member to uppercase:
val listOfItems: List[String] = List("first", "second", "third")
We can simply do this using maps:
val upperCaseListOfItems: List[String] = listOfItems map (_.toUpperCase)
Which would result in:
upperCaseListOfItems: List[String] = List(FIRST, SECOND, THIRD)
However, we could have as easily used for comprehension:
val upperCaseListOfItems: List[String] = for { item <- listOfItems } yield item.toUpperCase
Maps might be more functional, but I have always found for comprehensions easier to use and understand. It basically depends on how you learnt about Scala and your background, and which of these two methods you learnt about first!
I have always believed that what matters a lot is that the code is readable to other engineers, and for comps certainly achieve that.