在我的代碼中,我正在傳遞一個字典。該字典可以包含錯誤字符串。像這樣當測試某個屬性的存在時,正確使用警衛
func handleSomething(_ json: [String: Any]) -> (Bool, String?) {
if let error = json["error"] as? String {
print("I have an error: \(error)")
return (false, error)
}
...
return (true, nil)
}
我認爲這是使用後衛的好地方,但是代碼不簡明
func handleSomething(_ json: [String: Any]) -> Bool {
let error = json["error"] as? String
guard error == nil else {
print("I have an error: \(error!)")
return (false, error)
}
...
return (true, nil)
}
有沒有更好的方式來做到這一點,因此分配和檢查能在一行中完成?如果不是這是警衛的正確使用?
更新:增加了返回值以更好地說明問題的真實意圖。
閱讀:https://stackoverflow.com/a/32256911/771231 – Desdenova
只是保持第一個變體,不要想太多。 – Sulthan
不需要使用警衛和/或如果有條件。只要返回'json [「error」] == nil' –