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".