swift switch的几点用法

swift里面的 switch还真是灵活啊,由衷赞一个

//(1)定义重复的时候,只有第一个匹配上的才会被执行
var num = 4
switch num {
case 0:
    println("0")
case 1, 2, 3, 4:
    println("1, 2, 3, 4")
case 4, 5, 6, 7:
    println("4, 5, 6, 7")
case 8, 9:
    println("8, 9")
default:
    break
}
//结果 =》 1, 2, 3, 4

//(2)可以定义一个范围
num = 4
switch num {
case 0..<4: //定义一个范围  [..<] 小于右侧数
    println("0")
case 1...4:
    println("1, 2, 3, 4")
case 4...7:
    println("4, 5, 6, 7")
case 8...9:
    println("8, 9")
default:
    break
}
//结果 =》 1, 2, 3, 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", "男", 10)
switch data {
    
case ("ABC", "女", 0...10):
    println("第一行")
case (_, "男", let age):
    println("第二行 age :\(age)") //10 可以作为参数使用
default:
    break
}
//结果 =》 第二行 age :10

//(6)把用于比较的内容转化为变量,的同时使用Where来指定一个复杂条件
data = ("ABC", "男", 10)
switch data {
    
case ("ABC", "女", 0...10):
    println("第一行")
case (_, "男", 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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值