Skip to content

Instantly share code, notes, and snippets.

@NikhilManapure
Created October 29, 2017 10:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save NikhilManapure/e973337bacd1259c310032f7daa43c63 to your computer and use it in GitHub Desktop.
Save NikhilManapure/e973337bacd1259c310032f7daa43c63 to your computer and use it in GitHub Desktop.
import Foundation
extension Optional
{
@discardableResult
func ifSome(_ handler: (Wrapped) -> Void) -> Optional {
switch self {
case .some(let wrapped): handler(wrapped); return self
case .none: return self
}
}
@discardableResult
func ifNone(_ handler: () -> Void) -> Optional {
switch self {
case .some: return self
case .none(): handler(); return self
}
}
}
struct Person {
let name: String
}
var p: Person? = Person(name: "Joe")
p.ifSome { print($0) }.ifNone { print("none") } // prints Person
p = nil
p.ifSome { print($0) }.ifNone { print("none") } // prints none
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment