加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

swift 中switch 的新用法

发布时间:2020-12-14 01:46:34 所属栏目:百科 来源:网络整理
导读:let grage = "B"switch grade {case "A":println("优秀等级")case "B":println("良好等级")case "C"printf("中等的等级")default:printf("未知等级")}switch 语句在Switch中在C 语言中 如果case的结尾中没有break 就会执行下一个case 在Swift中 不需要在每
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条件不能定义变量和常量 





(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读