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