swift-控制流

for in

for index in 1...5 {
    print("\(index) times 5 is \(index * 5)")
}

let base = 3
let power = 10
var answer = 1
for _ in 1...power {
    answer *= base
}

let numberOfLegs = ["spider": 8, "ant": 6, "cat": 4]
for (animalName, legCount) in numberOfLegs {
    print("\(animalName)s have \(legCount) legs")
}

While 循環(huán)

//while 循環(huán)通過判斷單一的條件開始叹话。如果條件為 true ,語句的合集就會重復(fù)執(zhí)行直到條件變?yōu)?false 肛根。
while condition {
     statements
}

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

repeat {
    statements
} while condition

repeat {
    // move up or down for a snake or ladder
    square += board[square]
    // roll the dice
    diceRoll += 1
    if diceRoll == 7 { diceRoll = 1 }
    // move by the rolled amount
    square += diceRoll
} while square < finalSquare
print("Game over!")

Switch(相比 C 和 Objective-C 里的 switch 語句來說,Swift 里的 switch 語句不會默認(rèn)從每個情況的末尾貫穿到下一個情況里。相反,整個 switch 語句會在匹配到第一個 switch 情況執(zhí)行完畢之后退出框全,不再需要顯式的 break 語句。這使得 switch 語句比 C 的更安全和易用干签,并且避免了意外地執(zhí)行多個 switch 情況津辩。)

let anotherCharacter: Character = "a"
switch anotherCharacter {
case "a", "A":
    print("The letter A")
default:
    print("Not the letter A")
}
// Prints "The letter A"

let approximateCount = 62
let countedThings = "moons orbiting Saturn"
var naturalCount: String
switch approximateCount {
case 0:
    naturalCount = "no"
case 1..<5:
    naturalCount = "a few"
case 5..<12:
    naturalCount = "several"
case 12..<100:
    naturalCount = "dozens of"
case 100..<1000:
    naturalCount = "hundreds of"
default:
    naturalCount = "many"
}
print("There are \(naturalCount) \(countedThings).")
// prints "There are dozens of moons orbiting Saturn."

元組 (元組竟然是控制流~~)

//你可以使用元組來在一個 switch 語句中測試多個值。每個元組中的元素都可以與不同的值或者區(qū)間進(jìn)行匹配。另外喘沿,使用下劃線( _)來表明匹配所有可能的值闸度。
//下邊的例子接收一個 (x,y) 點坐標(biāo),用一個簡單的元組類型 (Int,Int) 蚜印,并且在后邊顯示在圖片中:
let somePoint = (1, 1)
switch somePoint {
case (0, 0):
    print("(0, 0) is at the origin")
case (_, 0):
    print("(\(somePoint.0), 0) is on the x-axis")
case (0, _):
    print("(0, \(somePoint.1)) is on the y-axis")
case (-2...2, -2...2):
    print("(\(somePoint.0), \(somePoint.1)) is inside the box")
default:
    print("(\(somePoint.0), \(somePoint.1)) is outside of the box")
}
//元組 值綁定:switch 情況可以將匹配到的值臨時綁定為一個常量或者變量莺禁,來給情況的函數(shù)體使用。這就是所謂的值綁定窄赋,因為值是在情況的函數(shù)體里“綁定”到臨時的常量或者變量的哟冬。
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))")
}

// switch 情況可以使用 where 分句來檢查額外的情況。
下邊的栗子劃分 (x,y) 坐標(biāo)到下邊的圖例中:
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")
}
//復(fù)合情況:多個 switch 共享同一個函數(shù)體的多個情況可以在 case 后寫多個模式來復(fù)合忆绰,在每個模式之間用逗號分隔浩峡。如果任何一個模式匹配了,那么這個情況都會被認(rèn)為是匹配的错敢。如果模式太長翰灾,可以把它們寫成多行,比如說:
let someCharacter: Character = "e"
switch someCharacter {
case "a", "e", "i", "o", "u":
    print("\(someCharacter) is a vowel")
case "b", "c", "d", "f", "g", "h", "j", "k", "l", "m",
     "n", "p", "q", "r", "s", "t", "v", "w", "x", "y", "z":
    print("\(someCharacter) is a consonant")
default:
    print("\(someCharacter) is not a vowel or a consonant")
}
// Prints "e is a vowel"

let stillAnotherPoint = (9, 0)
switch stillAnotherPoint {
case (let distance, 0), (0, let distance):
    print("On an axis, \(distance) from the origin")
default:
    print("Not on an axis")
}
// Prints "On an axis, 9 from the origin"

//控制轉(zhuǎn)移語句
//continue: 跳過
//break:跳出
//fallthrough:貫穿
//return:結(jié)束
//throw:拋出異常

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末伐债,一起剝皮案震驚了整個濱河市预侯,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌峰锁,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,348評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件双戳,死亡現(xiàn)場離奇詭異虹蒋,居然都是意外死亡,警方通過查閱死者的電腦和手機飒货,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評論 2 385
  • 文/潘曉璐 我一進(jìn)店門魄衅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人塘辅,你說我怎么就攤上這事晃虫。” “怎么了扣墩?”我有些...
    開封第一講書人閱讀 156,936評論 0 347
  • 文/不壞的土叔 我叫張陵哲银,是天一觀的道長。 經(jīng)常有香客問我呻惕,道長荆责,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,427評論 1 283
  • 正文 為了忘掉前任亚脆,我火速辦了婚禮做院,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己键耕,他們只是感情好寺滚,可當(dāng)我...
    茶點故事閱讀 65,467評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著屈雄,像睡著了一般村视。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上棚亩,一...
    開封第一講書人閱讀 49,785評論 1 290
  • 那天蓖议,我揣著相機與錄音,去河邊找鬼讥蟆。 笑死勒虾,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的瘸彤。 我是一名探鬼主播修然,決...
    沈念sama閱讀 38,931評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼质况!你這毒婦竟也來了愕宋?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,696評論 0 266
  • 序言:老撾萬榮一對情侶失蹤结榄,失蹤者是張志新(化名)和其女友劉穎中贝,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體臼朗,經(jīng)...
    沈念sama閱讀 44,141評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡邻寿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,483評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了视哑。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片绣否。...
    茶點故事閱讀 38,625評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖挡毅,靈堂內(nèi)的尸體忽然破棺而出蒜撮,到底是詐尸還是另有隱情,我是刑警寧澤跪呈,帶...
    沈念sama閱讀 34,291評論 4 329
  • 正文 年R本政府宣布段磨,位于F島的核電站,受9級特大地震影響庆械,放射性物質(zhì)發(fā)生泄漏薇溃。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,892評論 3 312
  • 文/蒙蒙 一缭乘、第九天 我趴在偏房一處隱蔽的房頂上張望沐序。 院中可真熱鬧琉用,春花似錦、人聲如沸策幼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽特姐。三九已至晶丘,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間唐含,已是汗流浹背浅浮。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留捷枯,地道東北人滚秩。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像淮捆,于是被迫代替她去往敵國和親郁油。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,492評論 2 348

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

  • Swift 提供了類似 C 語言的流程控制結(jié)構(gòu)攀痊,包括可以多次執(zhí)行任務(wù)的for和while循環(huán)桐腌,基于特定條件選擇執(zhí)行...
    窮人家的孩紙閱讀 693評論 1 1
  • Swift提供了多種控制流聲明。包括while循環(huán)來多次執(zhí)行一個任務(wù)苟径;if案站,guard和switch聲明來根據(jù)確定...
    BoomLee閱讀 1,939評論 0 3
  • Swift提供了各種控制流語句。 這些包括while循環(huán)來執(zhí)行多次任務(wù); if棘街,guard和switch語句嚼吞,以根...
    Joker_King閱讀 416評論 0 0
  • Swift提供了多種流程控制結(jié)構(gòu),包括可以多次執(zhí)行任務(wù)的while循環(huán)蹬碧,基于特定條件基于特定條件選擇執(zhí)行不同代碼分...
    edison0428閱讀 1,239評論 0 0
  • 一、for循環(huán) for-in循環(huán)炒刁,遍歷集合里面的每個元素: 當(dāng)不需要區(qū)間序列內(nèi)的值恩沽,可以用_來忽略對值的訪問: 遍...
    EndEvent閱讀 420評論 0 2