image.png
简易代码
var number = 1
switch number {
case 0:
print("0")
case 1:
print("1")
default:
print("default")
}
-
case
、default
后面不能写大括号{}
- 默认可以不写break不会贯穿到后面的条件
- switch必须要保证能处理所有情况,如果能保证已处理所有情况,也可以不必使用
default
-
case
、default
后面至少有一条语句可以用break代替
- switch也支持Character、String类型
-
case
后面可以跟着多个条件case 0,5
- 区间匹配、元组匹配
fallthrough贯穿
var number = 1
switch number {
case 0:
print("0")
case 1:
print("1")
fallthrough
default:
print("default")
}
控制台打印:
1
default
如果能保证已处理所有情况,也可以不必使用default
enum Answer {case right,wrong}
let answer = Answer.right
switch answer {
case Answer.right:
print("对")
case Answer.wrong:
print("错误")
}
复合条件
switch也支持Character、String类型
let name = "jack"
switch name {
case "Jack":
print("我是 Jack")
case "jack":
print("我是 jack")
default:
break
}
区间匹配、元组匹配
let count = 2
switch count {
case 1...2:
print("1...2")
default:
break
}
let map = (x:1,y:2)
switch map {
case (1,2):
print(map)
fallthrough
case (-2...2,-2...2):
print(map)
fallthrough
case (_,_):
print(map)
default:
break
}
- 可以用下划线 _ 忽略某个值
- 关于case 匹配问题,属于模式(Pattern matching)匹配
值绑定
let point = (2,2)
switch point {
case (let x, 0):
print("\(x),0")
case let (x,y) where x == y :
print("x=y")
default:
break;
}
- 必要时let也可以改成var
- where 语句应用
网友评论