Posted at

[Swift] Optional<Void>を使う

何の意味があるのか分からない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>は結構使えるぞ!