Created
October 29, 2017 10:07
-
-
Save NikhilManapure/e973337bacd1259c310032f7daa43c63 to your computer and use it in GitHub Desktop.
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 characters
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