控制流程

控制流程

本節(jié)包含內(nèi)容:

  • For循環(huán)
  • While循環(huán)
  • 條件語(yǔ)句
  • 控制轉(zhuǎn)移語(yǔ)句

For循環(huán)

for循環(huán)用來(lái)按照指定的次數(shù)多次執(zhí)行一系列語(yǔ)句镰矿。Swift 提供兩種for循環(huán)形式:

  • for-in用來(lái)遍歷一個(gè)區(qū)間(range)时鸵,序列(sequence),集合(collection)鹅士,系列(progression)里面所有的元素執(zhí)行一系列語(yǔ)句。
  • for條件遞增(for-condition-increment)語(yǔ)句,用來(lái)重復(fù)執(zhí)行一系列語(yǔ)句直到達(dá)成特定條件達(dá)成檬果,一般通過(guò)在每次循環(huán)完成后增加計(jì)數(shù)器的值來(lái)實(shí)現(xiàn)鞭莽。

While循環(huán)

While

while循環(huán)從計(jì)算單一條件開(kāi)始坊秸。如果條件為true,會(huì)重復(fù)運(yùn)行一系列語(yǔ)句澎怒,直到條件變?yōu)閒alse褒搔。

下面是一般情況下 while 循環(huán)格式:

while condition { statements }

Do-While

while循環(huán)的另外一種形式是do-while,它和while的區(qū)別是在判斷循環(huán)條件之前喷面,先執(zhí)行一次循環(huán)的代碼塊星瘾,然后重復(fù)循環(huán)直到條件為false。

下面是一般情況下 do-while循環(huán)的格式:

do { statements } while condition

條件語(yǔ)句

Swift 提供兩種類(lèi)型的條件語(yǔ)句:if語(yǔ)句和switch語(yǔ)句惧辈。通常琳状,當(dāng)條件較為簡(jiǎn)單且可能的情況很少時(shí),使用if語(yǔ)句盒齿。而switch語(yǔ)句更適用于條件較復(fù)雜念逞、可能情況較多且需要用到模式匹配(pattern-matching)的情境。

Switch

switch語(yǔ)句會(huì)嘗試把某個(gè)值與若干個(gè)模式(pattern)進(jìn)行匹配边翁。根據(jù)第一個(gè)匹配成功的模式翎承,switch語(yǔ)句會(huì)執(zhí)行對(duì)應(yīng)的代碼。當(dāng)有可能的情況較多時(shí)符匾,通常用switch語(yǔ)句替換if語(yǔ)句叨咖。

與 C 語(yǔ)言和 Objective-C 中的switch語(yǔ)句不同,在 Swift 中,當(dāng)匹配的 case 分支中的代碼執(zhí)行完畢后甸各,程序會(huì)終止switch語(yǔ)句垛贤,而不會(huì)繼續(xù)執(zhí)行下一個(gè) case 分支。這也就是說(shuō)趣倾,不需要在 case 分支中顯式地使用break語(yǔ)句聘惦。這使得switch語(yǔ)句更安全、更易用誊酌,也避免了因忘記寫(xiě)break語(yǔ)句而產(chǎn)生的錯(cuò)誤部凑。

case 分支的模式也可以是一個(gè)值的區(qū)間。

可以使用元組在同一個(gè)switch語(yǔ)句中測(cè)試多個(gè)值碧浊。元組中的元素可以是值涂邀,也可以是區(qū)間。另外箱锐,使用下劃線(xiàn)(_)來(lái)匹配所有可能的值比勉。

case 分支的模式可以使用where語(yǔ)句來(lái)判斷額外的條件。

控制轉(zhuǎn)移語(yǔ)句

控制轉(zhuǎn)移語(yǔ)句改變你代碼的執(zhí)行順序驹止,通過(guò)它你可以實(shí)現(xiàn)代碼的跳轉(zhuǎn)浩聋。Swift有四種控制轉(zhuǎn)移語(yǔ)句。

  • continue
  • break
  • fallthrough
  • return

Continue

continue語(yǔ)句告訴一個(gè)循環(huán)體立刻停止本次循環(huán)迭代臊恋,重新開(kāi)始下次循環(huán)迭代衣洁。就好像在說(shuō)“本次循環(huán)迭代我已經(jīng)執(zhí)行完了”,但是并不會(huì)離開(kāi)整個(gè)循環(huán)體抖仅。

Break

break語(yǔ)句會(huì)立刻結(jié)束整個(gè)控制流的執(zhí)行坊夫。當(dāng)你想要更早的結(jié)束一個(gè)switch代碼塊或者一個(gè)循環(huán)體時(shí),你都可以使用break語(yǔ)句撤卢。

貫穿(Fallthrough)

Swift 中的switch不會(huì)從上一個(gè) case 分支落入到下一個(gè) case 分支中环凿。相反,只要第一個(gè)匹配到的 case 分支完成了它需要執(zhí)行的語(yǔ)句放吩,整個(gè)switch代碼塊完成了它的執(zhí)行智听。相比之下,C 語(yǔ)言要求你顯示的插入break語(yǔ)句到每個(gè)switch分支的末尾來(lái)阻止自動(dòng)落入到下一個(gè) case 分支中渡紫。Swift 的這種避免默認(rèn)落入到下一個(gè)分支中的特性意味著它的switch 功能要比 C 語(yǔ)言的更加清晰和可預(yù)測(cè)到推,可以避免無(wú)意識(shí)地執(zhí)行多個(gè) case 分支從而引發(fā)的錯(cuò)誤。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末惕澎,一起剝皮案震驚了整個(gè)濱河市莉测,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌集灌,老刑警劉巖悔雹,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異欣喧,居然都是意外死亡腌零,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)唆阿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)益涧,“玉大人,你說(shuō)我怎么就攤上這事驯鳖∠醒” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵浅辙,是天一觀(guān)的道長(zhǎng)扭弧。 經(jīng)常有香客問(wèn)我,道長(zhǎng)记舆,這世上最難降的妖魔是什么鸽捻? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮泽腮,結(jié)果婚禮上御蒲,老公的妹妹穿的比我還像新娘。我一直安慰自己诊赊,他們只是感情好厚满,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著碧磅,像睡著了一般碘箍。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上续崖,一...
    開(kāi)封第一講書(shū)人閱讀 49,144評(píng)論 1 285
  • 那天敲街,我揣著相機(jī)與錄音,去河邊找鬼严望。 笑死多艇,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的像吻。 我是一名探鬼主播峻黍,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼拨匆!你這毒婦竟也來(lái)了姆涩?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤惭每,失蹤者是張志新(化名)和其女友劉穎骨饿,沒(méi)想到半個(gè)月后亏栈,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡宏赘,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年绒北,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片察署。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡闷游,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出贴汪,到底是詐尸還是另有隱情脐往,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布扳埂,位于F島的核電站业簿,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏阳懂。R本人自食惡果不足惜辖源,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望希太。 院中可真熱鬧克饶,春花似錦、人聲如沸誊辉。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)堕澄。三九已至邀跃,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蛙紫,已是汗流浹背拍屑。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留坑傅,地道東北人僵驰。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像唁毒,于是被迫代替她去往敵國(guó)和親蒜茴。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • Swift 提供了類(lèi)似 C 語(yǔ)言的流程控制結(jié)構(gòu)浆西,包括可以多次執(zhí)行任務(wù)的for和while循環(huán)粉私,基于特定條件選擇執(zhí)行...
    窮人家的孩紙閱讀 690評(píng)論 1 1
  • [The Swift Programming Language 中文版]本頁(yè)包含內(nèi)容: Swift提供了多種流程控...
    風(fēng)林山火閱讀 555評(píng)論 0 0
  • Swift提供了多種控制流聲明。包括while循環(huán)來(lái)多次執(zhí)行一個(gè)任務(wù)近零;if诺核,guard和switch聲明來(lái)根據(jù)確定...
    BoomLee閱讀 1,936評(píng)論 0 3
  • 本章將會(huì)介紹 控制流For-In 循環(huán)While 循環(huán)If 條件語(yǔ)句Switch 語(yǔ)句控制轉(zhuǎn)移語(yǔ)句 continu...
    寒橋閱讀 714評(píng)論 0 0
  • 最近幾個(gè)月我一直在斷斷續(xù)續(xù)的學(xué)習(xí)英語(yǔ)窖杀,雖然英語(yǔ)也學(xué)了10幾年了憎瘸,但可怕的是還沒(méi)有達(dá)到量變到質(zhì)變的過(guò)程。我在思考其中...
    加油大末兒閱讀 416評(píng)論 0 0