Swift编程中的switch...case语句实例解析_Swift

Swift中的switch...case语句可以判断对象类型, Objective-C中则必须是整数。
不可以穿透,可以不写break,

var rank = "A"
switch rank{
  case "A": //相当于if
    print("优")
  case "B": // 相当于else if
    print("优")
  case "C": // 相当于else if
    print("优")
  default: // 相当于else
    print("没有评级")
}

因为不能穿透所以不能这么写

var rank1 = "A"
switch rank1{
  case "A":
  case "B":
    print("优")
  case "C":
    print("优")
  default:
    print("没有评级")
}

只能这么写

var rank1 = "A"
switch rank1{
  case "A", "B": // 注意OC不能这样写
    print("优")
  case "C":
    print("差")
  default:
    print("没有评级")
}

不能不写default

var rank2 = "A"
switch rank2{
  case "A":
    print("优")
  case "B":
    print("良")
  case "C":
    print("差")
}

default位置只能在最后

var rank3 = "A"
switch rank3{
  default:
    print("没有评级")
  case "A":
    print("优")
  case "B":
    print("良")
  case "C":
    print("差")
}

在case中定义变量不用加大括号

var rank4 = "A"
switch rank4{
  case "A":
    var num = 10
    print("优")
  case "B":
    print("良")
  case "C":
    print("差")
  default:
    print("没有评级")
}

区间和元祖匹配

var num = 10;
switch num{
  case 1...9:
    print("个位数")
  case 10...99:
    print("十位数")
  default:
    print("其它数")
}
var point = (10, 15)
switch point{
  case (0, 0):
    print("坐标在原点")
  case (1...10, 10...20): // 可以在元祖中再加上区间
    print("坐标的X和Y在1~10之间")
  case (_, 0): // X可以是任意数
    print("坐标的X在X轴上")
  default:
    print("Other")
}

值绑定

var point = (1, 10)
switch point{
  case (var x, 10): // 会将point中X的值赋值给X
    print("x= \(x)")
  case (var x, var y): // 会将point中XY的值赋值给XY
    print("x= \(x) y= \(y)")
  case var( x, y):
    print("x= \(x) y= \(y)")
  default:
    print("Other")
}

根据条件绑定

var point = (100, 10)
switch point{
  // 只有where后面的条件表达式为真才赋值并执行case后的语句
  case var(x, y) where x > y:
    print("x= \(x) y= \(y)")
  default:
    print("Other")
}

fallthrough关键字
Swift语言中的switch不会从上一个case分支落入到下一个case分支中。相反,只要第一个匹配到的case分支完成了它需要执行的语句,整个switch代码块完成了它的执行。相比之下,C语言要求你显示的插入break语句到每个switch分支的末尾来阻止自动落入到下一个case分支中。Swift语言的这种避免默认落入到下一个分支中的特性意味着它的switch 功能要比C语言的更加清晰和可预测,可以避免无意识地执行多个case分支从而引发的错误。
 
如果你确实需要C风格的落入(fallthrough)的特性,你可以在每个需要该特性的case分支中使用fallthrough关键字。下面的例子使用fallthrough来创建一个数字的描述语句。

let integerToDescribe = 5
var description = "The number \(integerToDescribe) is"
switch integerToDescribe {
case 2, 3, 5, 7, 11, 13, 17, 19:
  description += " a prime number, and also"
  fallthrough
default:
  description += " an integer."
}
println(description)
// prints "The number 5 is a prime number, and also an integer."

这个例子定义了一个String类型的变量description并且给它设置了一个初始值。函数使用switch逻辑来判断integerToDescribe变量的值。当integerToDescribe的值属于列表中的质数之一时,该函数添加一段文字在description后,来表明这个是数字是一个质数。然后它使用fallthrough关键字来"落入"到default分支中。default分支添加一段额外的文字在description的最后,至此switch代码块执行完了。
 
如果integerToDescribe的值不属于列表中的任何质数,那么它不会匹配到第一个switch分支。而这里没有其他特别的分支情况,所以integerToDescribe匹配到包含所有的default分支中。
 
当switch代码块执行完后,使用println函数打印该数字的描述。在这个例子中,数字5被准确的识别为了一个质数。
 
NOTE:fallthrough关键字不会检查它下一个将会落入执行的case中的匹配条件。fallthrough简单地使代码执行继续连接到下一个case中的执行代码,这和C语言标准中的switch语句特性是一样的。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索swift
, switch
switch...case
switch case语句实例、swift switch case、swift3.0 switch case、swift3 switch case、switch case语句,以便于您获取更多的相关知识。

时间: 2024-08-01 14:04:32

Swift编程中的switch...case语句实例解析_Swift的相关文章

举例讲解Swift编程中switch...case语句的用法_Swift

Switch作为选择结构中必不可少的语句也被加入到了Swift中,只要有过编程经验的人对Switch语句都不会感到陌生,但苹果对Switch进行了大大的增强,使其拥有其他语言中没有的特性.使用Switch语句很简单: var i = 0 switch i { case 0: "0" //被输出 case 1: "1" default: "2" } 在这个最简单的Switch语句中,与其他语言很不同的一点是:不用显式的加上break.Swift的S

Swift编程中的一些类型转换方法详解_Swift

验证一个实例的类型'类型转换'在 Swift 语言编程中.它是用来检查实例类型是否属于特定超类或子类或其自己的层次结构定义. Swift 类型转换提供两个操作符:"is" 检查值的类型和 'as' 将类型值转换为不同的类型值. 类型转换还检查实例类型是否符合特定的协议一致性标准. 定义一个类层次结构类型转换用于检查实例的类型或者它属于特定类型.此外,检查类和它的子类层次结构来检查并转换这些实例,使之作为一个相同的层次结构. 复制代码 代码如下: class Subjects {   

详解Swift编程中的for循环的编写方法_Swift

for 循环是一个循环控制结构,可以有效地编写来执行的特定次数的循环. 语法 for 循环在 Swift 编程语言的语法是: 复制代码 代码如下: for init; condition; increment{    statement(s) } 下面是在一个循环的流程控制: 初始化 init 步骤首先被执行,并且仅一次.在这一步,可以声明和初始化任何循环控制变量. 只要一个分号出现,不需要一定把一个语句放在这里. 接下来,计算条件.如果为真,则执行循环体.如果是假,循环体不执行,只是在 for

详解Swift编程中的方法与属性的概念_Swift

方法在 Swift 中特定类型的相关联功能被称为方法.在 Objective C 中类是用来定义方法,其中作为 Swift 语言为用户提供了灵活性,类,结构和枚举中可以定义使用方法. 实例方法 在 Swift 语言,类,结构和枚举实例通过实例方法访问. 实例方法提供的功能 访问和修改实例属性 函数关联实例的需要 实例方法可以写在花括号 {} 内.它隐含的访问方法和类实例的属性.当该类型指定具体实例它调用获得访问该特定实例. 语法 复制代码 代码如下: func funcname(Paramete

快速排序算法在Swift编程中的几种代码实现示例_Swift

总所周知 快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用. 基本原理是: 数组a = [1,3,5,7,6,4,2] 1 选定一个 基准 a[0] 2 把比 a[0]小的放左边,比a[0]大的放右边. 中断递归如果少于两个数字 则不执行. 3 然后再分别对两边 执行 1,2,3操作. 对快速排序 的 想法 1 在待排序元素 大部分是有序的情况下, 速度 非常很快. 2 在最差的情况下,速度就很慢了. 相当于冒泡了 3 所以 快排的 优化, 定基准 非常重要,

Swift语言中字符串相关的基本概念解析_Swift

Swift 的字符是一个单一的字符串文字并且是字符数据类型.下面是一个简单的例子,使用了两种字符常量: 复制代码 代码如下: import Cocoa let char1: Character = "A" let char2: Character = "B" println("Value of char1 \(char1)") println("Value of char2 \(char2)") 当上述代码被编译和执行时,它产

浅谈Swift编程中switch与fallthrough语句的使用_Swift

在 Swift 中的 switch 语句,只要第一个匹配的情况(case) 完成执行,而不是通过随后的情况(case)的底部,如它在 C 和 C++ 编程语言中的那样.以下是 C 和 C++ 的 switch 语句的通用语法: 复制代码 代码如下: switch(expression){    case constant-expression  :       statement(s);       break; /* optional */    case constant-expressio

详解Swift的switch...case语句中break关键字的用法_Swift

与Objective-C中这部分内容相比,在Swift中switch得到了极大的改善.这是一件非常有趣的事,因为这还是没有添加到Objective-C中,还是没有打破Objective-C是C的超集的事实. 第一件令人兴奋的地方是可以对字符串转换.这也许正是你之前想要做,却不能做的事.在Objective-C中如果要对字符串用"switch",你必须要使用多个if语句,同时要用isEqualToString:,像下面这样: if ([person.name isEqualToStrin

js中switch case循环实例代码

 这篇文章主要介绍了js中switch case循环实例代码,有需要的朋友可以参考一下 代码如下: switch (objNameType) {   case 'PD':   valueUD = obj.id;   id = objName;   var loadVUD = UserData.load(exam, id);   if (loadVUD == null || loadVUD == undefined || loadVUD == '') {   var tmpTGId = obj.i