他改善了一些冗長的if寫法問題(下面範例會提到)
一般來說 guard要撘配else來使用,最好的用法(官方建議)是用在方法(method)中的return / break / continue 等流程控制
Swift的guard語法非常適合用來做optional的判斷
(概念上也可以把guard直接當做 if not 來看)
以下是簡單的範例:
// userName是個optional的值,可能是使用者輸入,或是網路來的
var userName:String?
func checkUserExists(name:String?)->Bool{
// 這裡用 底線(_) 是因為我們不是真的要值,只是想判斷optional是否有值
guard let _ = userName else{
return false
}
return true
}
checkUserExists(userName) // 輸出 false
userName = "Seachaos" // 給予userName有真正的值
checkUserExists(userName) // 輸出 true
上面範列的checkUserExists就是個簡單的例子
再來看一個滿常用到的範例,就是Dictionary (不管是Swift的Dictionary還是 NSDictionary 都適用) 的處理
