Book Image

Professional Scala

By : Mads Hartmann, Ruslan Shevchenko
Book Image

Professional Scala

By: Mads Hartmann, Ruslan Shevchenko

Overview of this book

This book teaches you how to build and contribute to Scala programs, recognizing common patterns and techniques used with the language. You’ll learn how to write concise, functional code with Scala. After an introduction to core concepts, syntax, and writing example applications with scalac, you’ll learn about the Scala Collections API and how the language handles type safety via static types out-of-the-box. You’ll then learn about advanced functional programming patterns, and how you can write your own Domain Specific Languages (DSLs). By the end of the book, you’ll be equipped with the skills you need to successfully build smart, efficient applications in Scala that can be compiled to the JVM.
Table of Contents (12 chapters)

Type Basics and Polymorphism


In this section, we'll look at different types and polymorphism. We'll start with the unified type system of Scala and end with existential types.

A Unified Type System

Scala has a unified type system. What this means is that all types, including "primitive" types, inherit from a common type. Any is a supertype of all types. It is often called the top type, and defines universal methods such as equals, hashCode, and toString. Nothing is a subtype of all types, and is often called the bottom type. There is no value that has a type of Nothing, so a common use case for it is to signal non-termination: a thrown exception, a program exit, or an infinite loop.

Any has two direct subclasses: AnyVal and AnyRef. Value types are represented by AnyVal. AnyRef represents the reference types. There are nine non-nullable predefined value types: Double, Float, Long, Boolean, Unit, Byte, Char, Short, and Int. All of these types are similar in other...