Skip to content

Instantly share code, notes, and snippets.

@itsthejb
Created June 15, 2017 07:23
Show Gist options
  • Save itsthejb/61b6ac6d76f3821e7ea0d631e13691d8 to your computer and use it in GitHub Desktop.
Save itsthejb/61b6ac6d76f3821e7ea0d631e13691d8 to your computer and use it in GitHub Desktop.
someAnd, noneOr
extension Optional {
func someAnd(_ closure: (Wrapped) -> Bool) -> Bool {
if case .some(let v) = self, closure(v) == true { return true }
return false
}
func noneOr(_ closure: (Wrapped) -> Bool) -> Bool {
switch self {
case .some(let v):
return closure(v)
case .none:
return true
}
}
}
let a: String? = "foo"
let b: String? = nil
a.someAnd({ $0 == "bar" })
b.noneOr({ $0 == "cat" })
b != nil ? b! == "foo" : false
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment