時々、guard
とlet
& where
を組み合わせてコードを単純化したいと思うことがあります。しかし、私はletとどこの優先順位が何であるのだろうか。たとえば:あなたは、コンソール結果を見ることができるようにスウィフト:ガードレットと優先度
class Person {
func check() -> Bool? {
print("checking")
return nil
}
}
func test(dont: Bool) {
let person = Person()
guard let check = person.check() where dont else {
print("should not check")
return
}
print("result: \(check)")
}
test(false)
、印刷出力は次のとおりです。
- が
guard <condition> else { }
構文でlet check = person.check() where dont
の条件について
を確認するべきではありませんチェックし、 where
の式であっても、let
の式の結果には関係なく、Swiftは最初に、次にwhere
をチェックします。場合によっては私のコードでlet
オプションのバインディングは多くの計算を必要とし、where
はwhere
をguard
の外に移動するとlet
の結果に依存せずに単純な条件に過ぎません。または私は優先順位について間違っているか、&どこに?