在本文中,您將學(xué)習(xí)使用break語(yǔ)句來(lái)轉(zhuǎn)移程序的控制權(quán)。
使用循環(huán)或條件語(yǔ)句時(shí),可能需要跳過(guò)循環(huán)內(nèi)的某些語(yǔ)句或立即終止循環(huán),而不檢查測(cè)試表達(dá)式
在這種情況下,將使用 break 和 continue語(yǔ)句。您將在下一章中了解 continue 語(yǔ)句。
break 語(yǔ)句停止執(zhí)行循環(huán) 或 switch語(yǔ)句。然后,它跳轉(zhuǎn)到loop或switch語(yǔ)句之后的下一條語(yǔ)句。
break語(yǔ)句的語(yǔ)法為:
break
for i in 1...5 { if i == 4 { break } print("i = \(i)") } print("The end")
運(yùn)行該程序時(shí),輸出為:
i = 1 i = 2 i = 3 The end
在上面的程序中,要迭代的序列的范圍是1到5。
i 的值設(shè)置為range(1)中的第一個(gè)數(shù)字,并在每次迭代時(shí)更新為范圍的下一個(gè)數(shù)字。
循環(huán)還包含一個(gè)if語(yǔ)句,表達(dá)式為 i==4。表達(dá)式在計(jì)算為 true 時(shí)(在第4次迭代時(shí))執(zhí)行break語(yǔ)句,for-in循環(huán)終止。
然后,它跳到循環(huán)外面以打印 The End。
var currentLevel:Int = 1, finalLevel:Int = 2 var isLifeAvailable = true while (isLifeAvailable) { if currentLevel > finalLevel { print("游戲結(jié)束,沒(méi)有關(guān)卡了") break } //玩游戲,進(jìn)入下一關(guān) currentLevel += 1 print("下一關(guān)") } print("While循環(huán)之外")
運(yùn)行該程序時(shí),輸出為:
下一關(guān) 下一關(guān) 游戲結(jié)束,沒(méi)有關(guān)卡了 While循環(huán)之外
在上面的程序中,while 循環(huán)的測(cè)試表達(dá)式始終為true。
當(dāng) currentLevel 大于 finalLevel 時(shí),將執(zhí)行if塊內(nèi)的break語(yǔ)句。然后,程序退出(終止)while循環(huán),并在循環(huán)之后執(zhí)行語(yǔ)句,即 print("While循環(huán)之外")..
for j in 1...2 { for i in 1...5 { if i == 4 { break } print("i = \(i)") } print("j = \(j)") }
運(yùn)行該程序時(shí),輸出為:
i = 1 i = 2 i = 3 j = 1 i = 1 i = 2 i = 3 j = 2
在上面的程序中,if i == 4 內(nèi)的break語(yǔ)句僅終止 for i in 1...5 內(nèi)部循環(huán)的執(zhí)行。 但是,它繼續(xù)執(zhí)行外循環(huán) for j in 1...2 。
但是,如果您也想要 break 外循環(huán) for j in 1...2呢?為此,我們?cè)赟wift中使用帶標(biāo)簽的語(yǔ)句。
前綴為(label:Statement)形式的語(yǔ)句稱為帶標(biāo)簽的語(yǔ)句。標(biāo)簽是一個(gè)標(biāo)識(shí)符,您可以稍后在break或continue語(yǔ)句中引用它。
在這里label是一個(gè)標(biāo)識(shí)符。當(dāng)break執(zhí)行語(yǔ)句時(shí),它將終止內(nèi)的循環(huán)label,并且程序?qū)⒘⒓刺D(zhuǎn)到帶有標(biāo)簽的語(yǔ)句之后的語(yǔ)句。
outerloop: for j in 1...2{ innerloop: for i in 1...5 { if i == 4 { break outerloop } print("i = \(i)") } print("j = \(j)") }
運(yùn)行該程序時(shí),輸出為:
i = 1 i = 2 i = 3
在以上程序中,有兩個(gè)標(biāo)記的語(yǔ)句 outerloop: for j in 1...2 和 innerloop: for i in 1...5。
標(biāo)簽名稱 outerloop 和 innerloop 可以與 break 語(yǔ)句一起使用。
該語(yǔ)句 break outerloop 終止兩個(gè)循環(huán)并結(jié)束程序。
如果您熟悉其他編程語(yǔ)言,例如C,C ++,Java等,則使用break語(yǔ)句終止switch語(yǔ)句。 但是在Swift中,switch語(yǔ)句在第一個(gè)匹配的switch用例完成后立即完成其執(zhí)行。 因此,在Swift的switch案例中添加break是可選的。要了解更多信息,請(qǐng)?jiān)L問(wèn)Swift switch語(yǔ)句。