Swift的switch结构中,fallthrough的用法注意总结

在swift的switch中,case后面加了fallthrough的用法,就和OC的case后面没加break的用法是一样的!

使用fallthrough需要注意的有:

1.加了fallthrough后,会直接运行【紧跟的后一个】case或default语句,不论条件是否满足都会执行

var age = 10
switch age {
    case 0...10:
        print("小朋友")
        fallthrough
    case 11...20:
        print("大朋友")
    case let x:
        print("\(x)岁的朋友")
}

//输出结果:
小朋友
大朋友

2.加了fallthrough语句后,【紧跟的后一个】case条件不能定义常量和变量

var age = 10
switch age {
    case 0...10:
        print("小朋友")
        fallthrough //此处报错
    case let x:
        print("\(x)岁的朋友")
}

//程序报错:
‘fallthrough‘ cannot transfer control to a case label that declares variables

原因,我理解的是:由第一点我们知道,第一个case执行完后(输出“小朋友”)会直接执行下一个case,而下一个case条件里定义了临时变量x,这样就导致直接从上一个case进来的并没有这个变量x,那如果case语句里用到了x,很明显就会出错。swift这么要求安全的一种语言自然是不允许发生这种事情的,所以,fallthrough后一个case条件里不允许定义常量/变量——除了紧跟着的后一个,后面的其他case还是可以定义常量/变量的

3.执行完fallthrough后直接跳到下一个条件语句,本条件执行语句后面的语句不执行

var age = 10
switch age {
    case 0...10:
        print("小朋友")
        fallthrough
        print("我跳转了哦") //这一句没有执行
    case 11...20:
        print("大朋友")
    case let x:
        print("\(x)岁的朋友")
}

//输出结果:
小朋友
大朋友


如果你有任何问题,请留言告诉我!

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-05 04:15:59

Swift的switch结构中,fallthrough的用法注意总结的相关文章

Swift - 24 - switch语句的高级用法

//: Playground - noun: a place where people can play import UIKit // 对区间进行判断 var score = 90 switch score { case 0: print("You got an egg!") case 1..<60: print("Sorry, you failed.") case 60..<70: print("Just passed.") ca

Swift中switch强大的模式匹配

不少人觉得Swift中switch语句和C或C++,乃至ObjC中的差不多,此言大谬! 让本猫带领大家看一下Swift中switch语句模式匹配的威力. 所谓模式匹配就是利用一定模式(比如couple)去定制自己需要的匹配结果,比如以下一个3D空间的点坐标: let point3D:(x:Int,y:Int,z:Int) = (1,2,3) 我们首先做一些简单的匹配,只是简单的比较是否等于或不等于指定的常量: switch(point3D){ case (0,0,0):print("Origin

swift闭包的另一种用法

这不是教程. 当你碰到函数参数需要传递一个闭包(closure)时,一般是可以直接这么传递的(假定无返回): // 教程一般教你在参数位置传递closure: someMethod(arg1, arg2, arg3: { args -> Void in //codes here }) // swift同时有一种“同步”的写法: someMethod(arg1, arg2){ args -> Void in //codes here } swift闭包的另一种用法

iOS -Swift 3.0 -for(循环语句用法)

1 // 2 // ViewController.swift 3 // Swift-循环语句 4 // 5 // Created by luorende on 16/12/08. 6 // Copyright ? 2016年 luorende. All rights reserved. 7 // 8 9 import UIKit 10 11 class ViewController: UIViewController { 12 13 override func viewDidLoad() { 1

switch… case 语句的用法(一)

public class Test7 { public static void main(String[] args) { int i=5; switch(i) { case 1: System.out.println("one"); case 10: System.out.println("ten"); case 5: System.out.println("five"); case 3: System.out.println("th

switch… case 语句的用法(二)

总结来说:switch的用法是判断case后面的表达式和switch后面的表达式是否相匹配,一旦case匹配,就会顺序执行后面的程序代码,而不管后面的case是否匹配,直到遇见break.都不匹配找default.不管default放在哪里.只要一个路口(case 或default)进入,就顺序执行后面的程序代码,知道遇到break if语句处理两个分支,处理多个分支时需使用if-else-if结构,但如果分支较多,则嵌套的if语句层就越多,程序不但庞大而且理解也比较困难.深层嵌套的else-i

SWIFT中用Switch case 类类型

有时觉得SWIFT的语法真的强大而又变态,不说了,直接上代码瞅瞅: 首先先定义一个交通工具的父类 class Vehicle{ var wheels:Int! var speed:Double! init(wheels:Int,speed:Double){ self.speed = speed self.wheels = wheels } func run(){ println("The \(self.wheels) wheels is running as \(self.speed) spee

Swift中Switch的学习

switch的简单使用: 相比 C 和 objective - C 中的 switch 语句,Swift 中的 switch 语句不会默认的掉落到每个 case 的下面进入 另一个 case.相反,第一个匹配的 switch 语句当第一个匹配的 case 一完成, 就完成了它整个的执行.而不需 要一个明确的 break 语句.这使得 switch 语句比在 C 语言中使用更安全.更简单,并避免错误地执行多个 case. 从例子学习: let anotherCharacter :Character

[Swift学习]UIkit之UISegSmentedControl的用法

UIButton的创建: (1) 在Stroyboard中使用Ctrl+Drag拖拽法创建 (2) 代码创建:UISegSmentedControl [Swift代码]     override func viewDidLoad() {         super.viewDidLoad()         // Do any additional setup after loading the view, typically from a nib.                  //设置选