Lazy evaluation
Writing efficient code is an important part of software engineering. A lot of times we will see cases where an expression is expensive to evaluate due to different possible reasons—database access, complex calculations, and so on. There are cases where we might even be able to exit the application without even evaluating these expensive expressions. This is where lazy evaluation becomes helpful.
Note
Lazy evaluation makes sure that an expression is evaluated only once when it is actually needed.
Scala supports lazy evaluation in a couple of flavors: lazy variables and by name parameters. We have already seen both in this book. The former we saw when we looked at creational design patterns in Chapter 6, Creational Design Patterns, and more specifically, lazy initialization. We saw the latter at a few places, but we encountered it for the first time in Chapter 8, Behavioral Design Patterns – Part 1, where we showed how to implement the command design pattern in a way that is...