LoginSignup
1
0

More than 5 years have passed since last update.

[Swift] Optional<Void>を使う

Posted at

何の意味があるのか分からないOptional<Void>()? )を使ってみました。

これは意味があるぞ

func hoge() throws

という値は返さないけど例外を投げる場合があるAPIを例外の内容は捨てて例外の有無だけ確認する。

func testHoge() {
   guard let _ = try? hoge() else { return }
}

あるいは

func testHoge() -> Bool {
  return (try? hoge()) != nil
}

これは意味がないぞ

特に何も返さないけど成功したかどうかだけを返す。

func fuga() -> ()? {

   guard XXXX else { return nil }

   return ()
}
func testFuga() {

    guard let _ = fuga() else { fatalError("なんか失敗した") }

    fuga()  // 値を使用しなくても警告が出ない
}

値を使用しなくても警告が出なくて便利!

素直に@discardableResultを使ったほうがいいぞ!

@discardableResult
func fuga2() -> Bool {  }

結論

知ってて損はないがわざわざ使うものではない。

おまけ

Result<Void>は結構使えるぞ!

1
0
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
1
0