swift 中switch 的新用法

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条件不能定义变量和常量 





相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...