【Swift4】(4) 控制流 for | switch | if-else
阿新 • • 發佈:2018-12-15
控制流
- 順序
- 迴圈
- 選擇
迴圈
-
for-in
-
for
-
while
-
do-while
-
for-in
1、遍歷區間 2、遍歷字串 3、遍歷陣列 4、遍歷字典
for 迴圈的幾種表示:
for i in 0...10 { //0...10表示包含頭尾的0到10之間所有的整數 //0..<10表示包含頭不包含尾的0到9之間所有的整數 //0...10這種條件區間內不能出現任何的空格 } //如果不關心迴圈本身的索引,可以直接用下劃線如下 for _ in 0...10 { } //在遍歷陣列的時候,Swift還提供了一種特別方便的方式(利用元祖) for (index,value) in array.enumerated() { //index是下標,value是值 //這樣使得遍歷陣列能寫的更加簡潔優雅 }
選擇
- if-else
- switch
var rating:Character = "A"
if rating == "A"{
print("Well")
}else if rating == "B" {
print("xx")
}else {
print("yy")
}
//break 可省略
switch rating {
case "a","A": //注意
print("Well")
break
default:
print("yy")
}
- switch 高階使用
var score = 50 //break 可省略 switch score { case 0: print("egg") case 1..<60: print("bad") default: print("not result") } let coord = (1,1) switch coord { case (0,0): print("it is at origin") fallthrough //向下判斷 case (_,0): //使用下劃線(_)忽略部分數值 print("(0,\(coord) if on the x-axis") case (0,_): print("(0,\(coord) if on the y-axis") case (-2...2,-2...2): //使用區間 print("it is include") case let(x,y) where x == y: //邏輯操作 print("x==y") default: //除非包含所有情況,否則default 不能省 print("default") } let info = ("1","控制流") switch info { case (_,let name) where name.hasPrefix("控制"): print("有控制流") default: print("無控制流") }
- 控制轉移
1、fallthrough
使用switch判斷時,值落入一個case,還有機會落入下一個switch。 但是,fallthrough不能使用在任意Switch語句中,不能使用其下面的Case中含有變數的case中
2、break
跳出當前迴圈體
,記住是迴圈體
3、continue
跳過當前操作
,進入下一個迴圈
- 示例:二維陣列、標籤
var board = Array<Array<Int> >() //二維陣列 for i in 0...10 { board.append(Array(repeatElement(0, count: 10))) } let randx = Int(arc4random()%10) let randy = Int(arc4random()%10) board[randx][randy] = 1 board var i = 0,j = 0 mainloop:for i in 0..<10{ //給外層迴圈新增一個標籤mainloop for j in 0..<10 { if board[i][j] == 1 { break mainloop //break 針對mainloop 跳出 } } } print("board[\(i)][\(j)] = 1")