In [[Swift]], there are several ways to work with optional values, that is, values that be `nil`. A type is nullable if it suffixed with an interrogation, for example, `let example: String?`.
To **unpack an optional value**, we can use `if let` and `guard let` clauses, which assign the value to a constant.
- `if let` will provide the constant within a given scope to manipulate it.
- `guard let` will run the code provided if value is `nil` (for an early return).
Another way to deal with these kind of values is **coalescing** them, that is, providing a value to be used in case the given variable is null.
```swift
let unpacked = optional ?? 42
```
It is also important to know about **chained optionals**, where we call functions over optional types in case they are available. For example, this code:
```swift
var book: Book? = nil
let author = book?.author?.first?.uppercased() ?? "A"
```
Reads as "if there is a book, and it has an author, get me the first letter uppercased; otherwise return A".