Slide 36
Slide 36 text
䭁䓸ך⢽
extension Optional {
public func reduce(_ initial: U, combine: (U, Wrapped) -> U) -> U {
switch self {
case .none:
return initial
case .some(let value):
return combine(initial, value)
}
}
public func filter(_ includeElement: @escaping (Wrapped) -> Bool) -> Wrapped? {
return flatMap { includeElement($0) ? $0 : nil }
}
public func forEach(_ action: (Wrapped) -> ()) {
reduce(()) { action($1) }
}
}