Difference between flatMap and compactMap in Swift

The Swift standard library defines 3 overloads for flatMap function: Sequence.flatMap<S>(_: (Element) -> S) -> [S.Element] Optional.flatMap<U>(_: (Wrapped) -> U?) -> U? Sequence.flatMap<U>(_: (Element) -> U?) -> [U] The last overload function can be misused in two ways: Consider the following struct and array: struct Person { var age: Int var name: String } let … Read more