LoginSignup
3
1

More than 5 years have passed since last update.

thorows -> U?, U?? への対処

Last updated at Posted at 2017-10-05

どうやって綺麗にしますか?

エラー処理特に書きたくない時、どうやって綺麗にしますか?(すわなち、 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 }

のように () を忘れると何も書かないのと同じになって、バグになるので注意が必要です(やらかしました)

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1