Swift 學習筆記

流程控制

if

  • 條件判斷不需加(),要使用也可以。
  • 判斷結果必須是Bool
  • 條件成立時,就算只執行一行程式也不能省略{}
  • 條件不成立,使用else執行否定敘述。
var happyness = true

if happyness {
    println("😀")       //return: "😀"
} else {
    println("😢")
}
  • 複合判斷使用&&||
var weekend = true
var sunny = true

if weekend && sunny {
    var mood = "😄"     //return: "😄"
}

switch

  • 條件判斷不需加(),要用也可以。
  • 條件分支使用case,加上處理的敘述。
  • 必須包含所有case,或是使用default捕捉剩下的情況。
var score = 0

switch score {
case 0:
    "白癡"            //retunr: "白癡"
case 100:
    "天才"
default:
    "平凡人"
}
  • case不需break可自動跳出switch
  • case不做任何事必須使用break
  • 使用fallthrough不離開switch繼續執行下個case
var score = 0

switch score {
case 0:
    fallthrough
case 100:
    "天才白痴一線間"    //return: "天才白痴一線間"
default:
    break
}
  • 可一次比較多個條件。
var grade = 100

switch grade {
case 0, 100:
    "天才白痴一線間"    //return: "天才白痴一線間"
default:
    "平凡人"
}
  • 可比較任何型別。
var fruit = "蘋果"

switch fruit {
case "蘋果":
    "好吃"            //return: "好吃"
case "榴槤":
    "噁心"
default:
    "還好"
}

for

for-loop

  • 條件判斷不需加(),要用也可以。
  • 判斷式結果必須是Bool
  • 複合判斷使用&&||
  • {}不能省略。
  • 使用變數var num: Int
for var num = 0; num < 3; num++ {
    "hello world"
}

for-in

  • 從集合中取出元素逐一執行,不能加()
  • {}不能省略。
  • 使用常數let friend: String
var friends = ["Eddy", "Gary", "Jimmy"]
for friend in friends {
    println("Hi, \(friend)!")
}

while

while-loop

var num = 0
while num < 10 {
    print("\(num)")
    num += 1
}
//output: 0123456789

do-while

var num = 0
do {
    print("\(num)")
    num += 1
} while num < 10
//output: 0123456789

Swift2 修改 do-while 語法,改用 repeat-while。

指定範圍

Range Operator

  • 宣告某整數區間的範圍。
  • 限制只能遞增,每次+1。
for num in 1...5 {
    print(num)
}   //output: 12345

for num in 1..

Stride Operator

  • 宣告範圍更靈活。
  • 可以遞增或遞減。
  • 起點使用:from
  • 終點使用:through(包含終點),to(不含終點)。
for num in stride(from: 9, through: 1, by: -2) {
    print(num)
}   //output: 97531 

for num in stride(from: 9, to: 1, by: -2) {
    print(num)
}   //output: 9753

進階用法

switch + Range

var score = 65

switch score {
case 0..<60:    "E"
case 60..<70:   "D" //output: "D"
case 70..<80:   "C"
case 80..<90:   "B"
case 90...100:  "A"
default:        "?"
}

for-in + Range

for num in 1...5 {
    print(num)
}   //output: 12345