Files
JSONAPI/Sources/JSONAPITesting/Optional+ZipWith.swift
T
2019-11-05 19:03:51 -08:00

13 lines
371 B
Swift

//
// Optional+ZipWith.swift
//
// Created by Mathew Polzin on 1/19/19.
//
/// Zip two optionals together with the given operation performed on
/// the unwrapped contents. If either optional is nil, the zip
/// yields nil.
func zip<X, Y, Z>(_ left: X?, _ right: Y?, with fn: (X, Y) -> Z) -> Z? {
return left.flatMap { lft in right.map { rght in fn(lft, rght) }}
}