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

Switch作为选择结构中必不可少的语句也被加入到了Swift中,只要有过编程经验的人对Switch语句都不会感到陌生,但苹果对Switch进行了大大的增强,使其拥有其他语言中没有的特性。使用Switch语句很简单:

var i = 0
switch i {
 case 0:
  "0" //被输出
 case 1:
  "1"
 default:
  "2"
}

在这个最简单的Switch语句中,与其他语言很不同的一点是:不用显式的加上break。Swift的Switch语句会自动在case结尾处加上break,执行完满足条件的case部分后,就自动退出了。但是在某些情况下,我们可能会希望Switch能同时执行两条case,那么可以这样:

var i = 3
switch i {
 case 0,3:
  "0" //被输出
 case 1:
  "1"
 default:
  "2"
}

在case后的多个条件中,用逗号隔开即可。
如果就是想执行完一条case之后,想继续执行下一条case,就要用到一个新的关键字:

var i = 0
switch i {
 case 0:
  "0" //被输出
  fallthrough
 case 1:
  "1" //被输出
 case 2:
  "2"
 default:
  "default"
}

使用新的关键字fallthrough能使Switch在执行完一个case之后,紧接着执行下一条case。
Swift的Switch语句一定要涵盖所有的情况,这并不是说一定要有default,只要上面的case能满足所有的情况,就可以不用写default。

下面我们来看一些小例子帮助理解:

例1:

let someOne = ("25","liyuanbo")

switch someOne
 {
case (_,let name) where name.hasPrefix("li"):
 println("First name has li")

default:
 println("First has not li")
}

这里 (_,let name) where name.hasPrefix("li") 就是在someOne2落入(_,let name)中的name有没有前缀字符串有没有li。当然someOne2是满足这个条件的。

例2:
下面我们来看看fallthrough的用法

switch coordinate1
 {
case (0,0):
 println("原点")
 fallthrough
case (_,0):
 println("x轴")
 fallthrough
case(0,_):
 println("y轴")
case(-2...2,-2...2):
 println("矩形区域")
default:
 println("没有任何目标区域")

}

这样我们可以看到打印输出了:原点,x轴,y轴,如果继续加,就会打印多出一个矩形区域。

最后我们要强调一点,swift中的switch一定的包含变量的所有情况,这里我们如果coordinate4是(10,10)然后把default注释点,就会报错,因为上面4个条件是不能满足(10,10)这个点的。

那是不是说必须得有default,当然不是的,这要对变量的所有情况都包含,可以没有default。

let coordinate2 = (2,0)

switch coordinate2
 {
case (0,0):
 println("原点")
case (let x,0):
 println("x轴")
case(0,let y):
 println("y轴")

case(let x,let y):
 println("所有区域")

}

这里就可以没有default,因为这里case(let x,let y)都包含了2维坐标的所有点。

(0)

相关推荐

  • Swift开发中switch语句值绑定模式

    Switch简介 Switch作为选择结构中必不可少的语句也被加入到了Swift中,只要有过编程经验的人对Switch语句都不会感到陌生,但苹果对Switch进行了大大的增强,使其拥有其他语言中没有的特性. // switch语句值绑定模式 let point = (100, 10) switch point { // 遇到有匹配的就不会在执行下一个了 这样子也可以啊case let (x, y) case (let x, let y): print("\(x): \(y)") //

  • 简单了解Swift语言中的break和continue语句的用法

    break语句 在 C 编程语言中的 break 语句有以下两种用法: 当在循环中遇到 break 语句, 循环立即终止,程序控制继续循环语句的后面(退出循环). 它可用于终止在switch语句(在下一章节)的情况(case). 如果使用嵌套循环(即,一个循环在另一个循环), break语句将停止最内层循环的执行,并开始执行下一行代码块之后的代码块. 语法 在Swift 编程中的 break语句的语法如下: 复制代码 代码如下: break 流程图 实例 复制代码 代码如下: import Co

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

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

  • Swift中swift中的switch 语句

    废话不多说了,直接给大家贴代码了,具体代码如下所示: /** switch 语句 */ let str = "aAbBacdef" let str2 = "aAbBadef" let str3 = "aAbBadeff" // var array = []; for c in ["A", "a", str3] { switch c { // case "a": case "a&

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

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

  • Swift中switch语句区间和元组模式匹配

    废话不多说了,下面一段代码给大家介绍了switch语句区间和元组模式匹配,具体内容如下所示: // switch 的广义匹配 let x = 1000 // 也就是说并没有像C语言那样 要求 switch 后面的是整数常量 switch x { // case后面可以跟区间啦 case 1...9: print("个位数") case 10...99: print("十位数") case 100...999: print("百位数") case

  • Swift流程控制之循环语句和判断语句详解

    Swift提供了所有c类语言的控制流结构.包括for和while循环来执行一个任务多次:if和switch语句来执行确定的条件下不同的分支的代码:break和continue关键字能将运行流程转到你代码的另一个点上. 除了C语言传统的for-condition-increment循环,Swift加入了for-in循环,能更加容易的遍历arrays, dictionaries, ranges, strings等其他序列类型. Swift的switch语句也比C语言的要强大很多. Swift中swi

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

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

  • java中switch case语句需要加入break的原因解析

    java中switch case语句需要加入break的原因解析            java 中使用switch case语句需要加入break 做了具体的实例分析,及编译源码,在源码中分析应该如何使用,大家可以参考下: 假设我们有如下这样一个switch语句: public static void test(int index) { switch (index) { case 1: System.out.println(1); case 2: System.out.println(2);

  • 举例讲解C#编程中委托的实例化使用

    合并委托 本示例演示如何创建多播委托. 委托对象的一个有用属性是:可以使用 + 运算符将多个对象分配给一个委托实例.多播委托包含已分配委托的列表.在调用多播委托时,它会按顺序调用列表中的委托.只能合并相同类型的委托. - 运算符可用于从多播委托中移除组件委托. using System; // Define a custom delegate that has a string parameter and returns void. delegate void CustomDel(string

  • 举例讲解Java编程中this关键字与super关键字的用法

    this 总要有个事物来代表类的当前对象,就像C++中的this指针一样,Java中的this关键字就是代表当前对象的引用. 它有三个主要的作用: 1.在构造方法中调用其他构造方法.       比如有一个Student类,有三个构造函数,某一个构造函数中调用另外构造函数,就要用到this(),而直接使用Student()是不可以的. 2.返回当前对象的引用. 3.区分成员变量名和参数名. 看下面的例子: public class Student { private String name; p

  • 举例讲解Python编程中对线程锁的使用

    锁 python的内置数据结构比如列表和字典等是线程安全的,但是简单数据类型比如整数和浮点数则不是线程安全的,要这些简单数据类型的通过操作,就需要使用锁. #!/usr/bin/env python3 # coding=utf-8 import threading shared_resource_with_lock = 0 shared_resource_with_no_lock = 0 COUNT = 100000 shared_resource_lock = threading.Lock()

  • 举例讲解C#编程中对设计模式中的单例模式的运用

    单例模式的介绍 说到单例模式,大家第一反应应该就是--什么是单例模式?,从"单例"字面意思上理解为--一个类只有一个实例,所以单例模式也就是保证一个类只有一个实例的一种实现方法罢了,下面给出单例模式的一个官方定义:确保一个类只有一个实例,并提供一个全局访问点.为了帮助大家更好地理解单例模式,大家可以结合下面的类图来进行理解,以及后面也会剖析单例模式的实现思路: 为什么会有单例模式 看完单例模式的介绍,自然大家都会有这样一个疑问--为什么要有单例模式的?它在什么情况下使用的?从单例模式的

  • 实例讲解Python编程中@property装饰器的用法

    取值和赋值 class Actress(): def __init__(self): self.name = 'TianXin' self.age = 5 类Actress中有两个成员变量name和age.在外部对类的成员变量的操作,主要包括取值和赋值.简单的取值操作是x=object.var,简单的赋值操作是object.var=value. >>> actress = Actress() >>> actress.name #取值操作 'TianXin' >&g

  • java中switch选择语句代码详解

    switch结构(开关语句)的语法 switch(表达式 ){ --->类型为int.char case 常量1 :--->case 结构可以有多个 //语句块1 break; --->程序跳出switch结构 case 常量n :--->常量的值不能相同 //语句块n break; default:--->和if结构中的 else作用相同 //语句块 break; } 下面看一段代码示例,有详细的注释,大家可以参考: public class SwitchStu{ /* s

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

    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(&quo

随机推荐