###case的使用 ######比對元組是否相等
let toupleT = (1,2)
if case (1,2) = toupleT{
print("兩個元組相等")
}
複制代碼
######比對數組是否包含某個元素
let arrayT = [1,2,3,4,5]
for case 5 in arrayT{
print("包含5")
}
複制代碼
######輸出數組裡的非空元素
let skills : [String?] = ["php","Swift",nil,"OC",nil,"JS"]
for case let skill? in skills{
print(skill)
}
輸出:
/*
php
Swift
OC
JS
*/
複制代碼
enum Derection{
case north, south, east, west(abbr: String)
}
let west = Derection.west(abbr: "W") // west("W")
if case Derection.west = west{
print(derectionStr) // west("W")
}
if case Derection.west(let derectionStr) = west{
print(derectionStr) // W
}
複制代碼
###使用where ######輸出0..10裡是偶數的數字
// 輸出0..10裡是偶數的數字
for i in 0...10 where i % 2 == 0{
print(i)
}
複制代碼
######也可以使用在更複雜的情況下 eg.電量例子
enum Power{
case fullyCharged
case normal(percent : Double)
case outOfPower
}
let bettery = Power.normal(percent: 0.01)
switch bettery{
case Power.normal(let percentage) where percentage < 0.1:
print("out of power")
case Power.normal(let percentage) where percentage >= 0.9:
print("almost power")
default:
print("normal power")
}
複制代碼
######使用逗号串聯條件 switch中的多個case預設是不向下貫通的,是以,我們不能像C語言一樣,通過羅列多個case來實作對多個條件統一處理的效果.要實作這樣的效果,我們隻能在一條case裡,用逗号分隔多個情況:
switch halfPower {
// ...
case .fullyCharged, .outOfPower
print("Fully charged or out of power")
// ...
}
複制代碼
逗号除了用在
switch...case...
中表示邏輯或的概念,也可以用在
if
中表示邏輯與的概念,例如為了處理之前電量低的情況,我們還可以用
if
這樣來實作:
if case .normal(let percentage) = battery,case 0...0.1 = percentage {
print("Almost out of power")
}
複制代碼
是以,當我們需要對多個條件遞進執行判斷的時候,不要寫下面這樣的
if
嵌套:
if A {
if B {
if C {
}
}
}
複制代碼
完全可以使用逗号把這些條件逐漸寫在一個
if
裡:
if A, B, C {
}
複制代碼
######使用tuple簡化多個條件的比較
let username = "[email protected]"
let password = 11111111
複制代碼
當我們要同時比較這兩個值時,最普通的寫法,就是在
if
中使用邏輯與(
&&
)操作符:
if username == "[email protected]" && password == 11111111 {
print("correct")
}
複制代碼
如果你不喜歡在
if
中并列多個比較語句,我們還可以用case臨時生成一個
tuple
,并且,讓它和
username / password
進行比較:
if case ("[email protected]", 11111111) = (username, password) {
print("correct")
}
複制代碼