如果你不真正關心你的綁定值(我假設你不這樣做,鑑於_
名),你可以這樣做:
func foo(bundle: NSBundle?, _ url: NSURL?) -> Bool {
guard url != nil || bundle != nil else {
print("crap")
return false
}
return true
}
如果你真的想綁定值,那麼您無法通過單個guard
聲明完成此操作。如果您未注意到任何一個選項的值,那麼它將執行else
塊,如您所注意的那樣。
如果您還在使用警戒聲明,您必須按照上面的說明加入警惕聲明,然後根據需要使用各種if let
聲明來解包事物(或者只是省略警惕聲明並在聲明中包含else聲明)下面的代碼是假的情況):
func foo(bundle: NSBundle?, _ url: NSURL?) -> Bool {
guard url != nil || bundle != nil else {
print("crap")
return false
}
if url == nil, let someBundle = bundle {
// Handle the bundle only case
}
else if bundle == nil, let someUrl = url {
// Handle the url only case
}
else if let someUrl = url, let someBundle = bundle {
// Handle the case for both
}
return true
}