1. 程式人生 > >【Swift4】(4) 控制流 for | switch | if-else

【Swift4】(4) 控制流 for | switch | if-else

控制流

  • 順序
  • 迴圈
  • 選擇

迴圈

  • 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")