Swift學(xué)習(xí)Day2-----循環(huán)和條件語(yǔ)句

一、循環(huán)語(yǔ)句

1.for循環(huán)

1)For-Condition-Increment條件循環(huán),和c語(yǔ)言中的一樣,例如:

for var x = 0;x<=5;x++ {?

? ? ? ? // ?執(zhí)行5次霞揉,x從0到4

}

2)for -in循環(huán)

(1)對(duì)于數(shù)據(jù)范圍适秩,序列,集合等中的每一個(gè)元素秽荞,都執(zhí)行一次扬跋,例如:

for i in 1...5{

? ? ? // ?執(zhí)行5次钦听,i從1到5

}

注意:i只循環(huán)中存在,也就是出了{}i就不存在了

(2)如果不需要序列中的每一個(gè)值潮秘,可以使用_來(lái)忽略它,例如:

for _ in 1...5{

//? 執(zhí)行5次,i從1到5

}

(3)遍歷數(shù)組

let array = [1,2,5,4]

for a in array{

}

(4)遍歷字典

let animalLegs = ["spider": 8, "ant": 6, "cat": 4]

for (animal,count) in animalLegs{

? ? print("\(animal)s have \(count) legs")

}

(5)遍歷字符串

for character in "jdjajdka".characters{

}


注:包裹條件和循環(huán)變量括號(hào)可以省略,但是語(yǔ)句體的大括號(hào)是必須的

2.while循環(huán)

while循環(huán)執(zhí)行一系列代碼塊,直到某個(gè)條件為false為止乍构,長(zhǎng)用于循環(huán)的次數(shù)不確定的情況

1) while循環(huán)

var i = 0

while i < 5{

? ? ? // 執(zhí)行5次

? ? ? ?i++

}

2)repeat-while循環(huán)

var i = 0

repeat {

i++

} while i < 5

二、條件語(yǔ)句

注意:

1) 和C語(yǔ)言以及Objective-C不一樣占键,if或者else后面必須帶有括號(hào),否則編譯器會(huì)報(bào)錯(cuò)

2) 在if語(yǔ)句中,條件必須是一個(gè)布爾表達(dá)式——像if name { ... }這樣的代碼是錯(cuò)誤的

可以用下面方式實(shí)現(xiàn):

let name = true

if name{

}

補(bǔ)充:可選值可用于把變量的值賦值nil,例如:

var optionalString:String? = "Hello"

optionalString = nil

var idh :Int? = 123

idh = nil

使用:在類型后面加一個(gè)問(wèn)號(hào)

可以使用if和let來(lái)處理值缺失,例如:

var optionalName: String? = "John Hello"

//optionalName = nil

var greeting = "Hello!"

if let name = optionalName {

greeting = "Hello, \(name)"

}

三牲距、switch語(yǔ)句

說(shuō)明:

(1)Swift 中的switch牍鞠,當(dāng)匹配的 case 分支中的代碼執(zhí)行完畢后,程序會(huì)終止switch語(yǔ)句评姨,而不會(huì)繼續(xù)執(zhí)行下一個(gè) case 分支难述。這也就是說(shuō),不需要在 case 分支中顯式地使用break語(yǔ)句。這使得switch語(yǔ)句更安全胁后、更易用店读,也避免了因忘記寫break語(yǔ)句而產(chǎn)生的錯(cuò)誤。

(2)支持任意類型的數(shù)據(jù)以及各種比較操作——不僅僅是整數(shù)以及測(cè)試相等

1)匹配一個(gè)數(shù)值范圍

var a = 5

switch a {

case 0...3:

print("a= 0")

case 4...6:

print("a = 1")

default:

print("a = 4")

}

2)匹配元組攀芯,_代表著任何值

var a = (5,2)

switch a {

case (1,1):

print("a= 0")

case (_,2):

print("a = 1")

default:

print("a = 4")

}

3)數(shù)值綁定

在case匹配的同時(shí)屯断,可以將switch語(yǔ)句中的值綁定給一個(gè)特定的常量或者變量,以便在case的語(yǔ)句中使用侣诺。比如:

var a = (1,2)

switch a{

case (1,let x):

print("x:\(x)") // 可以根據(jù)1得到x

case (let y,2):

print("y:\(y)")

default:

print("other")

}

4) 匹配字符

var str1:Character = "A"

switch str1

{

case? "A","a":

print("Have A")

default:

print("No A")

}

5)使用where關(guān)鍵詞來(lái)增加判斷的條件

var a = (1,2)

switch a{

case let (x,y) where x > y:

? ? ? ? ?print("x > y")

case let (x,y) where x< y:

? ? ? ? ?print("y > x")

default:

? ? ? ? ?print("other")

}

(3)如果兩個(gè)分支執(zhí)行的是相同的代碼殖演。可以直接寫在一個(gè)case里面趴久,用逗號(hào)妥箕,隔開(kāi),例如:

var a = 1

switch a {

? ? case 0,1:

? ? ? ? ?print("a= 0") ? ?

? ? ?default:

? ? ? ? ?print("a = 4")

}


三、控制跳轉(zhuǎn)語(yǔ)句

1) continue

continue語(yǔ)句告訴一個(gè)循環(huán)停止現(xiàn)在在執(zhí)行的語(yǔ)句,開(kāi)始下一次循環(huán)

for a in 0...4{

if a == 3{

? ? ? continue

}

? ? ? print(a) // 執(zhí)行4次

}

2)break

break語(yǔ)句將終止整個(gè)循環(huán)的執(zhí)行,可以用在循環(huán)語(yǔ)句中,也可以用在switch語(yǔ)句中

for a in 0...6{

if a == 3{

? ?break

}

? ? ?print(a) // 執(zhí)行3次

}

3) fallthrough

由于Swift中的switch語(yǔ)句不會(huì)自動(dòng)的因?yàn)闆](méi)有break而跳轉(zhuǎn)到下一個(gè)case,因此如果需要想C語(yǔ)言中那樣,依次執(zhí)行每個(gè)case的時(shí)候赖欣,就需要用到fallthrough關(guān)鍵詞

var s: Int = 2

switch s{

case 1:

print("1")

case 2:

print("2") // 打印

fallthrough case 3:

print("3")? // 打印

default :

print("other")

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌阱当,老刑警劉巖油坝,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瞬女,死亡現(xiàn)場(chǎng)離奇詭異慈俯,居然都是意外死亡略号,警方通過(guò)查閱死者的電腦和手機(jī)诫舅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了励堡?”我有些...
    開(kāi)封第一講書人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵揩慕,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng)聘芜,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任仗哨,我火速辦了婚禮苇倡,結(jié)果婚禮上堵漱,老公的妹妹穿的比我還像新娘示惊。我一直安慰自己愉镰,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布货裹。 她就那樣靜靜地躺著搔预,像睡著了一般鸭轮。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上滩字,一...
    開(kāi)封第一講書人閱讀 51,443評(píng)論 1 302
  • 那天造虏,我揣著相機(jī)與錄音,去河邊找鬼麦箍。 笑死漓藕,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的挟裂。 我是一名探鬼主播享钞,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼诀蓉!你這毒婦竟也來(lái)了栗竖?” 一聲冷哼從身側(cè)響起暑脆,我...
    開(kāi)封第一講書人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎狐肢,沒(méi)想到半個(gè)月后添吗,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡份名,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年碟联,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片僵腺。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡鲤孵,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出辰如,到底是詐尸還是另有隱情普监,我是刑警寧澤,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布丧没,位于F島的核電站鹰椒,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏呕童。R本人自食惡果不足惜漆际,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望夺饲。 院中可真熱鬧奸汇,春花似錦、人聲如沸往声。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)浩销。三九已至贯涎,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間慢洋,已是汗流浹背塘雳。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留普筹,地道東北人败明。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像太防,于是被迫代替她去往敵國(guó)和親妻顶。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354

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