swift里面的 switch还真是灵活啊,由衷赞一个
- //(1)定义重复的时候,只有第一个匹配上的才会被执行
- var num = 4
- switch num {
- case 0:
- println("0")
- case 1,2,3,4:
- println("1,4")
- case 4,5,6,7:
- println("4,7")
- case 8,9:
- println("8,9")
- default:
- break
- }
- //结果 =》 1,4
- //(2)可以定义一个范围
- num = 4
- switch num {
- case 0..<4: //定义一个范围 [..<] 小于右侧数
- println("0")
- case 1...4:
- println("1,4")
- case 4...7:
- println("4,7")
- case 8...9:
- println("8,4
- //(3)可以为一个多值类型制定Swith,[_]下划线代表不作为匹配条件
- var data = ("ABC","男",10)
- switch data {
- case ("ABC","女",0...10):
- println("第一行")
- case (_,0...10):
- println("第二行")
- default:
- break
- }
- //结果 =》 第二行
- //(4)可以用计算式进行匹配
- num = 5
- switch (num % 3,num % 5) {
- case (0,0):
- println("可以同时被3,5整除")
- case (0,_):
- println("只能被3整除")
- case (_,0):
- println("只能被5整除")
- default:
- break
- }
- //结果 =》 第二行
- //(5)可以直接把用于比较的内容转化为变量使用
- data = ("ABC",let age):
- println("第二行 age :\(age)") //10 可以作为参数使用
- default:
- break
- }
- //结果 =》 第二行 age :10
- //(6)把用于比较的内容转化为变量,的同时使用Where来指定一个复杂条件
- data = ("ABC",let age) where age * 10 < 100 :
- println("第二行 age :\(age)")
- case (_,let age) where age * 10 <= 100 :
- println("第三行 age :\(age)")
- default:
- break
- }
- //结果 =》 第三行 age :10
- //(7)关于default,default默认是必须要有的,但是下面两种情况可以不再定义default。
- //第一种情况是使用通配符 [——] 下划线
- num = 5
- switch num {
- case 1...10:
- println("1...10")
- case _:
- println("other all")
- }
- //第二种是枚举型作为条件
- enum Sex {
- case man,woman,other
- }
- let s = Sex.man
- switch s {
- case .man,.woman:
- println("")
- case .other:
- println("")
- }
- //也就是说在条件可以被全部网罗的情况下,可以不定义default