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.
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, ...