Scala Language Option Class Basics


An Option is a data structure that contains either a single value, or no value at all. An Option can be thought of as collections of zero or one elements.

Option is an abstract class with two children: Some and None.

Some contains a single value, and None contains no value.

Option is useful in expressions that would otherwise use null to represent the lack of a concrete value. This protects against a NullPointerException, and allows the composition of many expressions that might not return a value using combinators such as Map, FlatMap, etc.

Example with Map

val countries = Map(
  "USA" -> "Washington",
  "UK" -> "London",
  "Germany" -> "Berlin",
  "Netherlands" -> "Amsterdam",
  "Japan" -> "Tokyo"
println(countries.get("USA")) // Some(Washington)
println(countries.get("France")) // None
println(countries.get("USA").get) // Washington
println(countries.get("France").get) // Error: NoSuchElementException
println(countries.get("USA").getOrElse("Nope")) // Washington
println(countries.get("France").getOrElse("Nope")) // Nope

Option[A] is sealed and thus cannot be extended. Therefore it's semantics are stable and can be relied on.