您的位置:首页 > 移动开发 > Swift

swift 中switch 的新用法

2015-10-02 17:43 375 查看
let grage = "B"
switch grade {

case "A":
println("优秀等级")
case "B":
println("良好等级")
case "C"
printf("中等的等级")
default:
printf("未知等级")
}

switch 语句在Switch中
在C 语言中
如果case的结尾中没有break 就会执行下一个case

在Swift中

不需要在每一个case后面增加break
执行完case对应的代码后默认会自动退出switch 语句

每一个case后面必须有可执行的语句
1个case后面可以填写多个匹配条件 条件之间用逗号隔开
let score = 95
switch score/10{
case 10,9:
case 8,7,6:
default:
}

case 后面可以填写一个范围匹配
let score = 95
switch socre{
case 90...100:
println("A")
case 60...89:
println("B")
default:
println(C)

}
//注意
switch 要保证处理所有可能的情况 不然编译器会报错
因此 这里的default一定要加 不然会出现一些处理不到的情况

case 还可以匹配元组
这是与OC 一个不一样的地方 方便使用
//例如 判断一个点在蓝色句型 框内
let point = (1,1)
switch point{
case (0,0):
println("这个点在原点上")
case (_,0):
println("这个点在x轴上")
case (0,_):
println("这个点在y轴上")
case (-2...2,-2...2)
println("这个点在矩形框内")

}

case 的数值绑定
在case匹配的同时 可以讲switch中的值绑定给一个特定的变量或者常量
以便在case后面的语句中使用
let point = (10,0)
switch point{

case (let x,0):
println("这个点在x轴上,x值是\(x)")'
case (0,let y):
println("这个点在y轴上,y的值是\(y)")
case let (x,y):
printf("这个点的x值是\(x),y值是\(y)")
}
//打印:这个点在x 轴上 x 值是\(y)
注意观察 这里是没有default 的  所有default不是必须的
但是case 必须处理所有的情况

where  这个语法是特别好用的 比以前的判断简单多了
switch 语句可以使用where 来增加判断条件
//比如判断一个点是否在一条线上

var point = (10,-10)
switch point{
case let (x,y) where x == y:
println("这个点在绿色的线上")
case let (x,y) where x == -y:
println("这个点在紫线上")
default :
printf("这个点不在这两条线上")

}
//打印:这个点在紫线上

fallthrough  的用法
执行完当前的case后  会执行fallthrogh 后面的的case
或者default
let num = 20
var str = "\(num)是个"
switch num{
case 0...50:
str += "0~50之间的"
fallthrough
default:
str += "整数"
}
println(str)
//打印 : 20 是个0~50之间的整数
注意:fallthrough后面的case条件不能定义变量和常量
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: