O'Reilly logo

Scala Functional Programming Patterns by Atul S. Khot

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

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

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required