over 6 years ago
For-In Loops
前面像是 array 或是 dictionary 如果取 index 或是 key value 就不再敘述。
若不需要用值只想要跑迴圈的話,可以用底線來省略值。
for _ in 1…5 {
}
While
跟一般 while 一樣,條件是 true 就會進入 body,一直到條件為 false 才會跳出。
var k = 0
while k > 10 {
k += 1
}
也有類似其他語言的 do while 用法,此用法第一次跑迴圈時不會經過條件判斷。
let k = false
repeat {
print("loop")
} while k
Switch
- Swift 的 switch 判斷不局限於整數,可以用許多不同的型別。
- Swift 的 switch 若遇到符合的 case,會直接結束,不會再跑下一個 case, 所以不需要用 break 跳開,但如果需要的話還是可以在 switch 內使用 break。
- Swift 的 case 內不可為空的,否則會有 error。
可以在 switch 的判斷內做數量判斷。let s = "a" switch s { case "a": print ("a") case "A": print ("b") default: break }
可以透過 switch 對 tuple 做判斷,用底線可以代表忽略 tuple 內的這個位置。let count = 100 switch count { case 0: break case 1..<=50: break case 51..<=100: break default: break }
如果有需要的話,可以將判斷的值宣告成新的變數或常數。let t = (1,2,3,4) switch t { case (0,0,0,0): break case (,2,,_): break default: break }
Switch 的判斷內可以加上 where 做額外的判斷let k = 123 switch k { case 1..<100: break case let x x }
可以把多種 case 條件混合在一個 case 內。let k = 123 switch k { case 1..<100: break case let x where x > 120: x default: break }
let k = 123 switch k { case 1,2,3,4,5,6: break default: break }
Fallthrough
Fallthrough 只能用在 switch 內,用途是可以跳到最後一個 case。
let k = 123
switch k {
case 1,2,3,4,5,6:
break
case 123:
fallthrough
default:
print(“123")
break
}
命名
幫 while, for-in 等等的 loop 方法來命名,可以在另外的判斷或是 loop 內來操作特定的 loop。
以下的例子是雙重迴圈,對外層迴圈來命名,並且在內層迴圈來停止最外層迴圈,讓整個迴圈停止。
testLoop: for _ in 1…5 {
for index in 1…5 {
if index == 1 {
break testLoop
}
}
}
命名方法就是參照上述的例子,後方可用 while 或 switch 來取代,也可以用 continue 等關鍵字來操作 loop。
Guard
- Guard 一定是判斷條件為 true。
- Guard 一定要有 else,且 else 內一定要有 return 或是 break 等等跳開的方法。
可以用 guard 判斷 Optionals 是否為 nil, 若 optionals 有值且後續想要直接使用的話,可以像之前提到與 if 一樣的方法來打開, 可以快速的同時判斷 optionals 是否為 nil 並取值。let num = 5 guard num == 5 else { return }
let num: Sting? = "123" guard let value = num else { return } value