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条件不能定义变量和常量
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。