こういう関数があったとしましょう。
func hoge() throws -> Bool {
// それほど時間のかからない処理
return result
}
func fuga() throws -> Bool {
// 結構時間のかかる処理
return result
}
この2つの関数のうちのいずれかが true
なら特定の処理をするとします。
普通に書くとこうなります。
do {
if try hoge() || try fuga() {
// 処理
}
}
catch {}
swiftcさん
error: 'try' cannot appear to the right of a non-assignment operator
だめだー!
書き直します。
do {
if try hoge() {
//処理
} else if try fuga() {
// 上と同じ処理
}
}
catch {}
ありえねぇ!!!
書き直します。
do {
let isHoge = try hoge()
let isFuga = try fuga()
if isHoge || isFuga {
// 処理
}
}
catch {}
不要かもしれないのに必ず時間のかかるfuga()
を実行してるのつらい。
実はこのように書けます。
(@t_ae さんにコメントをいただきさらに簡略化しました)
do {
if try hoge() || fuga() {
// 処理
}
}
catch {}
||
さん、 お前、rethrows
だったのかよ...