Foreach–sugary sweetener
We briefly touched on the for
expression. We also noted how the for
expressions are similar to the map version. In fact, the Scala compiler translates the for
expression into a form using map, flatMap, and filter. The following are how the forms of the expression are translated.
One generator
This is a simple case that can be readily translated into a form that uses a map:
scala> for (p <- List(1,2,3)) yield(p+1) res10: List[Int] = List(2, 3, 4)
Gets translated into the following:
scala> List(1,2,3) map (p => p + 1) res11: List[Int] = List(2, 3, 4)
A generator and a filter
Let's try printing pretty numbers from a list, such that each number is divisible by 3:
scala> val p = (1 to 20).toList p: List[Int] = List(1, 2, 3, 4, ...
Get Scala Functional Programming Patterns now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.