Swift語法--控制流

控制流

while顽决、if兆览、guard吃嘿、switch

For-in循環(huán)

While循環(huán)

  • while
  • repeat-while

While

while condition {
    ...
}

Repeat-While

repeat {
    statements
} while condition

條件語句

If

Switch

這里與C系其他語言不同,兩個case之間不需要加break來退出宝恶;如果兩個case要執(zhí)行相同的代碼乘综,可以將其寫在一個case中憎账,用逗號分隔套硼;可以匹配區(qū)間卡辰;

元組

可以使用元組在一個switch中測試多個值,使用_來匹配所有可能的值

值綁定

可以將匹配到的值臨時綁定為一個常量或者變量

所謂的值綁定,因為值是在case的函數體力綁定到臨時的常量或者變量的

let anotherPoint = (2, 0)
switch anotherPoint {
case (let x, 0):
    print("on the x-axis with an x value of \(x)")
case (0, let y):
    print("on the y-axis with a y value of \(y)")
case let (x, y):
    print("somewhere else at (\(x), \(y))")
}

如果你的case包含了所有的情況九妈,那么就不需要寫default了

Where

switch可以使用where來檢查額外的情況

let yetAnotherPoint = (1, -1)
switch yetAnotherPoint {
case let (x, y) where x == y:
    print("(\(x), \(y)) is on the line x == y")
case let (x, y) where x == -y:
    print("(\(x), \(y)) is on the line x == -y")
case let (x, y):
    print("(\(x), \(y)) is just some arbitrary point")
}

復合情況

多個switch共享一個case的情況可以在case后都寫上

控制語句轉移

  • continue
  • break
  • fallthrough
  • return
  • throw

Continue

可以用在for循環(huán)里的switch分句case里面反砌,相當于C系語言的break

Break

也可以用在switch中,由于case中不允許為空萌朱,所以可以在default語句中直接break

Fallthrough

由于switch中的case執(zhí)行完之后直接跳出宴树,所以遇到那種執(zhí)行完上一個case繼續(xù)執(zhí)行下一個case的時候,使用fallthrough

給語句打標簽

給語句打標簽晶疼,可以讓break酒贬、continue指定跳轉到這個標簽里

提前退出

guard,類似于if翠霍,基于布爾值表達式來執(zhí)行語句锭吨。使用guard語句來要求條件必須為真才能執(zhí)行guard之后的語句。與if不同寒匙,guard語句總有一個else分句——else分句里面的代碼會在條件不為真的時候執(zhí)行

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).")
}

檢查API的可用性

if #available(iOS 9, OSX 10.10, *) {
    // Use iOS 9 APIs on iOS, and use OS X v10.10 APIs on OS X
} else {
    // Fall back to earlier iOS and OS X APIs
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末零如,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子锄弱,更是在濱河造成了極大的恐慌考蕾,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件会宪,死亡現場離奇詭異肖卧,居然都是意外死亡,警方通過查閱死者的電腦和手機狈谊,發(fā)現死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進店門喜命,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人河劝,你說我怎么就攤上這事壁榕。” “怎么了赎瞎?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵牌里,是天一觀的道長。 經常有香客問我务甥,道長牡辽,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任敞临,我火速辦了婚禮态辛,結果婚禮上,老公的妹妹穿的比我還像新娘挺尿。我一直安慰自己奏黑,他們只是感情好炊邦,可當我...
    茶點故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著熟史,像睡著了一般馁害。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蹂匹,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天碘菜,我揣著相機與錄音,去河邊找鬼限寞。 笑死忍啸,一個胖子當著我的面吹牛,可吹牛的內容都是我干的履植。 我是一名探鬼主播吊骤,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼静尼!你這毒婦竟也來了白粉?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤鼠渺,失蹤者是張志新(化名)和其女友劉穎鸭巴,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體拦盹,經...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡鹃祖,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了普舆。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片恬口。...
    茶點故事閱讀 38,654評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖沼侣,靈堂內的尸體忽然破棺而出祖能,到底是詐尸還是另有隱情,我是刑警寧澤蛾洛,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布养铸,位于F島的核電站,受9級特大地震影響轧膘,放射性物質發(fā)生泄漏钞螟。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一谎碍、第九天 我趴在偏房一處隱蔽的房頂上張望鳞滨。 院中可真熱鬧,春花似錦蟆淀、人聲如沸拯啦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽提岔。三九已至,卻和暖如春笋敞,著一層夾襖步出監(jiān)牢的瞬間碱蒙,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工夯巷, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留赛惩,地道東北人。 一個月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓趁餐,卻偏偏與公主長得像喷兼,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子后雷,可洞房花燭夜當晚...
    茶點故事閱讀 43,543評論 2 349

推薦閱讀更多精彩內容

  • 本章將會介紹 控制流For-In 循環(huán)While 循環(huán)If 條件語句Switch 語句控制轉移語句 continu...
    寒橋閱讀 715評論 0 0
  • Swift提供了多種控制流聲明臀突。包括while循環(huán)來多次執(zhí)行一個任務勉抓;if,guard和switch聲明來根據確定...
    BoomLee閱讀 1,939評論 0 3
  • Swift 提供了類似 C 語言的流程控制結構候学,包括可以多次執(zhí)行任務的for和while循環(huán)藕筋,基于特定條件選擇執(zhí)行...
    窮人家的孩紙閱讀 693評論 1 1
  • [The Swift Programming Language 中文版]本頁包含內容: Swift提供了多種流程控...
    風林山火閱讀 559評論 0 0
  • 【楔子】 “啪……” “賤人,蘇公子豈是你能高攀得上的梳码?也不看看自己幾斤幾兩隐圾,你說,他要是見到你的這張臉掰茶,...
    鬼卿公子閱讀 2,549評論 3 21