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.