どうやって綺麗にしますか?
エラー処理特に書きたくない時、どうやって綺麗にしますか?(すわなち、 U??
型)
func foo() throws -> U? {
}
func bar() {
guard let result = try? foo() else {
return
}
guard let resultUnwrapped = result else {
return
}
print(resultUnwrapped)
}
対応
flatMap
let result: U? = (try? foo()).flatMap { $0 }
??
演算子
let result: U? = (try? foo()) ?? nil
flatMapのほうが統一感があって良いと思いますが、お好みの方法で。
余談
Optional(nil) != nil
です。
let result: U?? = try? foo().flatMap { $0 }
のように ()
を忘れると何も書かないのと同じになって、バグになるので注意が必要です(やらかしました)