Use Optional Map & FlatMap
Written by Team Kodeco
In Swift, the map and flatMap functions are commonly used to transform and flatten non-optional values. However, these functions can also be used with optional values.
Optional Map
The map function can be used to transform the value of an optional if it isn’t nil. The following code demonstrates an example of using the map function with an optional integer:
var optionalInt: Int? = 5
var mappedInt: Int? = optionalInt.map { $0 * 2 }
print(mappedInt) // Output: Optional(10)
optionalInt = nil
mappedInt = optionalInt.map { $0 * 2 }
print(mappedInt) // nil
In this example, the map function takes a closure that multiplies the optional integer by 2 (if it is not nil).
Optional FlatMap
The flatMap function can be used to flatten a nested optional. The following code demonstrates an example of using the flatMap function with nested optional integers:
let nestedOptional: Int?? = Optional(Optional(5))
let flatMappedOptional = nestedOptional.flatMap { $0 }
print(flatMappedOptional) // Output: Optional(5)
In this example, the flatMap function takes a closure that returns the nested optional integer, and returns a new optional integer with a value of 5.
It’s important to note that if the value inside the outer optional is nil, the flatMap will return nil.