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