func parse(JSON: AnyObject?) ->
(User?, NSError?)
let JSON: AnyObject? = //...
let (user, error) = parse(JSON)
if let e = error {
//...
return
}
if let u = user {
//...
} else {
// maybe user is nil...
}
Slide 34
Slide 34 text
https://flic.kr/p/DC3Q
Too bad
usererrornilͷͱ͖Ͳ͏͍͏Τϥʔʁ
ͬͱͬͱstrictʹදݱ͍ͨ͠
(User?, NSError?)ૉ͗͢Δ
Slide 35
Slide 35 text
ܕΛഁΔ
ܕʹΑΔܕͷநԽ
Slide 36
Slide 36 text
3FTVMU5
Slide 37
Slide 37 text
enum Result {
case Success(T)
case Failure(NSError)
init(_ value: T) {
self = .Success(value)
}
init(_ error: NSError) {
self = .Failure(error)
}
}
Slide 38
Slide 38 text
ܕഁΓٕͦͷ
ʙHFOFSJDTʙ
Slide 39
Slide 39 text
enum Result {
case Success(T)
case Failure(NSError)
init(_ value: T) {
self = .Success(value)
}
init(_ error: NSError) {
self = .Failure(error)
}
}
generics
func parse(JSON: AnyObject?) ->
Result
let JSON: AnyObject? = // ...
let result = parse(JSON)
switch result {
case .Success(let user): // ...
case .Failure(let error): // ...
}