This chapter provides a whirlwind tour of the main features of the Scala 3 programming language. After this initial tour, the rest of the book provides more details on these features, and the Reference documentation provides many more details.
Setting Up Scala
Throughout this chapter, and the rest of the book, we encourage you to try out the examples by either copying them or typing them out manually. The tools necessary to follow along with the examples on your own computer can be installed by following our getting started guide.
Alternatively you can run the examples in a web browser with Scastie, a fully online editor and code-runner for Scala.
Comments
One good thing to know up front is that comments in Scala are just like comments in Java (and many other languages):
IDEs
The two main IDEs (integrated development environments) for Scala are:
Naming conventions
Another good thing to know is that Scala naming conventions follow the same “camel case” style as Java:
- Class names:
Person
,StoreEmployee
- Variable names:
name
,firstName
- Method names:
convertToInt
,toUpper
More on conventions used while writing Scala code can be found in the Style Guide.
Contributors to this page:
Contents
- Introduction
- Scala Features
- Why Scala 3?
- A Taste of Scala
- Hello, World!
- The REPL
- Variables and Data Types
- Control Structures
- Domain Modeling
- Methods
- First-Class Functions
- Singleton Objects
- Collections
- Contextual Abstractions
- Toplevel Definitions
- Summary
- A First Look at Types
- String Interpolation
- Control Structures
- Domain Modeling
- Tools
- OOP Modeling
- FP Modeling
- Methods
- Method Features
- Main Methods in Scala 3
- Summary
- Functions
- Anonymous Functions
- Function Variables
- Partial Functions
- Eta-Expansion
- Higher-Order Functions
- Write Your Own map Method
- Creating a Method That Returns a Function
- Summary
- Packaging and Imports
- Scala Collections
- Collections Types
- Collections Methods
- Summary
- Functional Programming
- What is Functional Programming?
- Immutable Values
- Pure Functions
- Functions Are Values
- Functional Error Handling
- Summary
- Types and the Type System
- Inferred Types
- Generics
- Intersection Types
- Union Types
- Algebraic Data Types
- Variance
- Opaque Types
- Structural Types
- Dependent Function Types
- Other Types
- Contextual Abstractions
- Extension Methods
- Context Parameters
- Context Bounds
- Given Imports
- Type Classes
- Multiversal Equality
- Implicit Conversions
- Summary
- Concurrency
- Scala Tools
- Building and Testing Scala Projects with sbt
- Worksheets
- Interacting with Java
- Scala for Java Developers
- Scala for JavaScript Developers
- Scala for Python Developers
- Where To Go Next