Scala Programming
A lightweight execution-visualization book.
Foundations
Hello Scala
Variables
Collections
Conditionals
Loops
Functions
Values, Types, and Expressions
Vals and Vars
Primitive Types
String Interpolation
Expression Blocks
Tuples and Options
Type Inference
Control Flow
If Expressions
Ordered Guards
While Loops
For Ranges
Choice Labels
Flag Loops
Functions and Methods
Method Basics
Parameters and Returns
Default Arguments
Local Functions
Named Arguments
Helper Composition
Collections
List Basics
Vector Indexing
Map Lookup
Set Membership
Transform with a Loop
Counting Groups
Classes and Objects
Simple Constructors
Fields and Methods
Companion Factory
Singleton Objects
Private State
Immutable Records
Case Classes and Pattern Matching
Case Class Basics
Copy and Update
Value Equality
Pattern Matching
Matching a Field
Default Cases
Traits and Composition
Trait Contracts
Implementing a Trait
Mixing Traits
Overriding Trait Methods
Composition
Reusable Behavior
Options and Error Handling
Option Basics
Safe Lookup
Transforming an Option
Validation Status
Result Labels
Guard Clauses
Higher-Order Functions
Function Values
Passing a Function
Mapping a List
Filtering a List
Folding a List
Predicate Checks
Immutable Data Patterns
Update by Copy
Building a New List
Updating a Map
Returning New State
Nested Immutable Data
Comparing Versions
For-Comprehensions
For-Yield
Guarded For
Nested For
For over an Option
Range Comprehension
Accumulating Labels
Maps, Sets, and Grouping
Map Access
Iterating Map Entries
Set Operations
Grouping
Counting Frequencies
Sorted Summary
Sequences and Lazy Views
Indexing and Slicing
Take and Drop
Lazy Views
Indexed Stepping
Sliding Windows
Chained Transformations
Packages and Imports
Package Basics
Selective Import
Renamed Import
Local Import
Object Namespaces
Avoiding Name Collisions
Files and Text Processing
Parsing a Path
Splitting Lines
Filtering Lines
Parsing Key-Value Text
Counting Words
Formatting a Record
Testing Basics
Expected vs Actual
Testing a Function
Counting Passes
Boundary Checks
Table-Driven Cases
Failure Messages