Created
October 29, 2017 10:07
-
-
Save NikhilManapure/e973337bacd1259c310032f7daa43c63 to your computer and use it in GitHub Desktop.
Revisions
-
NikhilManapure created this gist
Oct 29, 2017 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,29 @@ 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