switch
- switch语句会将一个值与多个可能的模式匹配。然后基于第一个成功匹配的模式来执行合适的代码块。
- switch语句一定得是全面的。就是说,给定类型里每一个值都得被考虑到并且匹配到一个 swithch 的case。如果无法提供一个switch case 所有可能的值,你可以定义一个默认匹配所有的case来匹配所有未明确出来的值。这个匹配所有的情况用 关键字 default 标记,并且必须在所有 case 的最后出现。
OC 与 Swift 中的区别
- Objective-C switch语句如果不全面,仍然可以运行。
- Swift中没有隐式贯穿
相比 C 和 Objective-C 里的 switch 语句来说,Swift 里面的 switch 语句不会默认从匹配 case 的末尾贯穿到下一个 case 里。
相反, 整个 switch 语句会在匹配到第一个 switch 的case执行完毕后退出,不再需要显示的 break 语句。 - 每一个case 的函数体必须包含至少一个可执行的语句。
- 在一个switch 的case 语句中匹配多个值可以用逗号分隔,并且可以写成多行。
区间匹配
- switch 的 case 的值可以在一个区间中匹配。
元组匹配
- 你可以使用元组来在一个 switch 语句中测试多个值。
- 使用下划线(_)来表明匹配所有可能的值
值绑定
- switch 的 case 可以将匹配到的值临时绑定未一个常量或者变量,来个case 的函数体使用。
- 如果使用var关键字,临时的变量就会以合适的值来创建并初始化。对这个变量的任何改变都只会在case 的函数体中有效
where语句
- switch 的 case 可以使用 where 分句来检查是否符合特定的约束
复合匹配
- 多种情形共享同一个函数体的多个情况可以在 case 后写多个模式来复合,在每个模式之间用逗号分隔。如果任何一个模式匹配了,那么这个情况都会被认为是匹配的。如果模式太长,可以把他们写成多行。
复合匹配-值绑定
- 复合匹配同样可以包含值绑定。所有复合匹配的模式都必须包含相同的值绑定集合,并且复合情况中的每一个绑定都得有相同的类型格式。这才能确保无论复合匹配的那部分命中了,接下来的函数体中的代码都能访问到绑定的值,并且值的类型也都相同
网友评论