Swift Guard語句 提前退出

像if語句一樣,guard的執(zhí)行取決于一個表達(dá)式的布爾值。我們可以使用guard語句來要求條件必須為真時,以執(zhí)行g(shù)uard語句后的代碼。不同于if語句,一個guard語句總是有一個else從句,如果條件不為真則執(zhí)行else從句中的代碼。

func greet(person:[String:String]){
    guard  let name = person["name"] else {
        return
    }
    print("Hello \(name)")
    
    guard let location = person["location"] else {
        print("I hope the weather is  nice  near you")
        return
    }
    print("I hope the weather is nice in \(location)")
}
greet(person: ["name":"John"])
print("----------------------------------------------------------------------")
greet(person: ["name":"Jane","location":"Cupertion"])

Log

Hello John
I hope the weather is nice near you


Hello Jane
I hope the weather is nice in Cupertion

  1. 如果guard語句的條件被滿足,則繼續(xù)執(zhí)行g(shù)uard語句大括號后的代碼。將變量或者常量的可選綁定作為guard語句的條件,都可以保護(hù)guard語句后面的代碼。

  2. 如果條件不被滿足,在else分支上的代碼就會被執(zhí)行。這個分支必須轉(zhuǎn)移控制以退出guard語句出現(xiàn)的代碼段。它可以用控制轉(zhuǎn)移語句如return,break,continue或者throw做這件事,或者調(diào)用一個不返回的方法或函數(shù),例如fatalError()。

  3. 相比于可以實(shí)現(xiàn)同樣功能的if語句,按需使用guard語句會提升我們代碼的可讀性。它可以使你的代碼連貫的被執(zhí)行而不需要將它包在else塊中,它可以使你在緊鄰條件判斷的地方,處理違規(guī)的情況

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 86.復(fù)合 Cases 共享相同代碼塊的多個switch 分支 分支可以合并, 寫在分支后用逗號分開。如果任何模式...
    無灃閱讀 1,551評論 1 5
  • Swift提供了多種控制流聲明。包括while循環(huán)來多次執(zhí)行一個任務(wù);if,guard和switch聲明來根據(jù)確定...
    BoomLee閱讀 2,070評論 0 3
  • 1.帶標(biāo)簽的控制語句 我們可以使用標(biāo)簽(statement label)來標(biāo)記一個循環(huán)體或者條件語句,對于一個條件...
    ZYiDa閱讀 603評論 0 0
  • 從洛杉磯返回舊金山,我們汲取了來時的經(jīng)驗(yàn)教訓(xùn),選取了白天行車,這樣的好處是開車視線好,路況看得清楚,更能保...
    天澤家人閱讀 525評論 0 1
  • 函數(shù)在實(shí)際開發(fā)應(yīng)用當(dāng)中,大概分為普通函數(shù)/匿名函數(shù)/自執(zhí)行函數(shù)/構(gòu)造函數(shù)/其中普通函數(shù)分為函數(shù)表達(dá)式,函數(shù)聲明兩種...
    a4316976150e閱讀 380評論 0 0

友情鏈接更多精彩內(nèi)容