Book Image

Scala Programming Projects

By : Mikael Valot, Nicolas Jorand
Book Image

Scala Programming Projects

By: Mikael Valot, Nicolas Jorand

Overview of this book

Scala Programming Projects is a comprehensive project-based introduction for those who are new to Scala. Complete with step-by-step instructions and easy-to-follow tutorials that demonstrate best practices when building applications, this Scala book will have you building real-world projects in no time. Starting with the fundamentals of software development, you’ll begin with simple projects, such as developing a financial independence calculator, and then advance to more complex projects, such as a building a shopping application and a Bitcoin transaction analyzer. You’ll explore a variety of Scala features, including its OOP and FP capabilities, and learn how to write concise, reactive, and concurrent applications in a type-safe manner. You’ll also understand how to use libraries such as Akka and Play. Furthermore, you’ll be able to integrate your Scala apps with Kafka, Spark, and Zeppelin, along with deploying applications on a cloud platform. By the end of the book, you’ll have a firm foundation in Java programming that’ll enable you to solve a variety of real-world problems, and you’ll have built impressive projects to add to your professional portfolio.
Table of Contents (18 chapters)
Title Page
Copyright and Credits
Packt Upsell
Contributors
Preface
Index

Strictness and laziness


Scala's default evaluation strategy is strict. This means that if you don't do anything special, any variable declaration or arguments of a function call are immediately evaluated. The opposite of a strict evaluation strategy is a lazy evaluation strategy, which means that evaluation is performed only when needed.

Strict val

The following is a strict variable declaration:

class StrictDemo {val strictVal = {println("Evaluating strictVal")"Hello"}}val strictDemo = new StrictDemo//Evaluating strictVal//strictDemo: StrictDemo = StrictDemo@32fac009

We can see that println is called immediately. This means that the block at the right side of the assignment is evaluated as soon as the StrictDemo class is instantiated. If we want to delay the block's evaluation, we have to use the lazy prefix.

lazy val

When we use the lazy prefix in front of valorvar (as shown in the following code), it is evaluated only when needed:

class LazyDemo {lazy val lazyVal = {println("Evaluating lazyVal...