在Swift中还有一个好玩的东西, 那就是控制转移语句, 它可以改变代码的执行顺序, 可以实现代码的跳转, Swift有四种控制专一的方法, 让我们一起来看看吧:


1.Continue

continue 告诉一个循环体立刻停止本次循环迭代,重新开始下次循环迭代。就好像在说“本次循环迭代我已经执行完了”,但是并不会离开整个循环体。

PS: 在一个 for-condition-increment 循环体中,在调用 continue 语句后,迭代增量仍然 会被计算求值。循环体继续像往常一样工作,仅仅只是循环体中的执行代码会被跳过。

let puzzleInput = "great minds think alike"
var puzzleOutput = "-"
for character in puzzleInput {
switch character {case "a", "e", "i", "o", "u":continuedefault:puzzleOutput.append(character)}
}
println(puzzleOutput)
// 打印出来的结果: -grt mnds thnk lk

2.Break

break 语句会立刻结束整个控制流的执行。当你想要更早的结束一个 switch 代码块或者一 个循环体时,你都可以使用 break 语句。

当在一个循环体中使用 break 时,会立刻中断该循环体的执行,然后跳转到表示循环体结束 的大括号(})后的第一行代码。不会再有本次循环迭代的代码被执行,也不会再有下次的循环迭代产生。

当在一个 switch 代码块中使用 break 时,会立即中断该 switch 代码块的执行,并且跳转到 表示 switch 代码块结束的大括号(})后的第一行代码。

这种特性可以被用来匹配或者忽略一个或多个分支。因为Swift语言的switch需要包含所有 的分支而且不允许有为空的分支,有时为了使你的意图更明显,需要特意匹配或者忽略某个 分支。那么当你想忽略某个分支时,可以在该分支内写上 break 语句。当那个分支被匹配到时,分支内的 break 语句立即结束 switch 代码块。

PS: 当一个 switch 分支仅仅包含注释时,会被报编译时错误。注释不是代码语句而且也 不能让 switch 分支达到被忽略的效果。你总是可以使用 break 来忽略某个分支。

来看看例子:

let numberSymbol: Character = "三"
var possibleIntegerValue: Int?
switch numberSymbol {case "1", "?", "一", "?":possibleIntegerValue = 1
case "2", "?", "二", "?":possibleIntegerValue = 2
case "3", "?", "三", "?":possibleIntegerValue = 3
case "4", "?", "四", "?":possibleIntegerValue = 4
default:break
}if let integerValue = possibleIntegerValue {println("The integer value of \(numberSymbol) is \(integerValue).")} else {println("An integer value could not be found for \(numberSymbol).")
}
// 打印出来的结果: The integer value of 三 is 3.

3.Fallthrough

Swift 语言中的 switch 不会从上一个 case 分支落入到下一个 case 分支中。相反,只要第一个匹配到的 case 分支完成了它需要执行的语句,整个 switch 代码块完成了它的执行。相比 之下,C 语言要求你显示的插入 break 语句到每个 switch 分支的末尾来阻止自动落入到下 一个case分支中。Swift语言的这种避免默认落入到下一个分支中的特性意味着它的switch功能要比 C 语言的更加清晰和可预测,可以避免无意识地执行多个 case 分支从而引发的错 误。

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)
// 打印出来的结果:The integer value of 三 is 3.

PS: fallthrough 关键字不会检查它下一个将会落入执行的 case 中的匹配条件。fallthrough 简单地使代码执行继续连接到下一个 case 中的执行代码,这和 C 语言标准中的 switch 语句特性是一样的。


4.Labeled Statements

在 Swift 语言中,你可以在循环体和 switch 代码块中嵌套循环体和 switch 代码块来创造复杂的控制流结构。然而,循环体和 switch 代码块两者都可以使用 break 语句来提前结束整 个方法体。因此,显示地指明 break 语句想要终止的是哪个循环体或者 switch 代码块,会很 有用。类似地,如果你有许多嵌套的循环体,显示指明 continue 语句想要影响哪一个循环体也会非常有用。

我们直接来看例子:

var a = 10
var b = 0varB: while b != a {println(b++)
}println("循环结束, b = \(b)")
// 打印出来的结果:
// 0
// 1
// 2
// 3
// 4
// 5
// 6
// 7
// 8
// 9
// 循环结束, b = 10

其实这个Labeled Statements很简单, 就相当于给一个循环体加了一个名字, 而例子中的循环体名字就叫做varB.


好了, 这次我们就讲到之里, 下次我们继续~

转载于:https://www.cnblogs.com/iOSCain/p/4529370.html

Swift语法基础:19 - Swift的控制转移的语句, Continue, Break, Fallthrough, Labeled Statements...相关推荐

  1. Swift语法基础:19 - Swift的控制转移的语句, Continue, Break, Fallthrough, Labeled Statements

    在Swift中还有一个好玩的东西, 那就是控制转移语句, 它可以改变代码的执行顺序, 可以实现代码的跳转, Swift有四种控制专一的方法, 让我们一起来看看吧: 1.Continue continu ...

  2. swift语言特性,swift语法介绍,swift使用技巧

    Swift语言特性.Swift语法介绍.Swift使用技巧 Swift是一种由苹果公司开发的编程语言,于2014年首次发布.它是一种现代.快速.安全的编程语言,用于iOS.macOS.watchOS和 ...

  3. c++ for循环 流程图_python 零基础必知--条件控制与循环语句

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 本文章来自腾讯云 作者:somenzz 如果没有 if 语句和循环语句,请问你怎么 ...

  4. python中if continue else,python基础;if else;for;while 分支处理.continue,break

    if else 语法: if : 分支1 elif : 分支2 else: 分支3 eg: 1 age = int(input("inpute you age")) 2 if ag ...

  5. Python接口自动化测试框架(基础篇)-- 流程控制之循环语句forwhile

    前言 很开心,python学到循环语句了,也越来越好玩了,学到这儿,基本上也能处理一些流水线的工作了,只是稍欠装饰显得不那么灵活.复用性不高. 循环语句 python中循环语句有for和while:如 ...

  6. 有 OC 经验的程序员快速学习 Swift 语法

    前言 苹果官方推出 Swift 语言至今,已经过了 7 年之久,Swift 也更新到了 5.5 版本, 它的语法和 API 也趋向于稳定.最近闲来无事,决定开始研究这 iOS 开发编程语言的语法.因为 ...

  7. Java语法基础-2

    1. 语句 1.1 流程控制语句 在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的.也就是说程序的流程对运行结果有直接的影响.所以,我们必须清楚每条语句的执行流程.而且,很多时候我 ...

  8. 100内奇数之和流程图_JavaScript基础教程(六)流程控制之循环语句

    JavaScript入门教程之循环语句 循环语句从字面意思理解就是重复执行,能够让计算机按照程序员要求重复执行某种操作的能力是所有程序设计语言所必须具备的基本能力.在JavaScript程序设计语言中 ...

  9. java中循环语句_Java语法基础之循环结构语句详解

    一.循环结构 循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循 ...

最新文章

  1. 如何实现ios屏幕的横竖屏自适应
  2. 【Linux】24_网络管理数据链路层详解
  3. 修改小程序swiper 点的样式_请问微信小程序swiper切换的点如何修改样式。
  4. python 退出_如果读完这篇文章不能让你入门Python,那我将永久退出编程界
  5. php monolith,单体架构(Monolith)与微服务架构(MicroService)
  6. libsvm2.89在matlab,libsvm-mat-2.89-3工具箱,方便实用
  7. linux下安装和使用vnc
  8. Kotlin:数组、字符串模板
  9. JSON 之 SuperObject(8): 关于乱码的几种情况 - 向 Henri Gourvest 大师报告
  10. F检验临界值表(Frideman检验表)
  11. 基于单片机的函数信号波形发生器系统设计(#0428)
  12. 简单PHP会话(session)说明
  13. SequoiaDB巨杉数据库-卸载
  14. PC版微信多开,不用软件,自己动手丰衣足食。
  15. 安装和使用 Python
  16. jmeter如何添加MD5插件
  17. ResponseBody详解
  18. 【超级鼠标键盘锁】之winlogon.exe进程调试
  19. 微信点击链接下载APP或者文件后自动调用手机自带默认浏览器或提示选择浏览器打开如何实现
  20. pip 快速下载方式

热门文章

  1. 滴滴android wear,滴滴出行(com.sdu.didi.psnger) - 6.1.21 - 应用 - 酷安
  2. Kernel源码笔记之调度:4.Fork系统调用
  3. PCL学习笔记(二):PCL官方教程学习
  4. 塔勒布四部曲之《黑天鹅》
  5. 即刻云|从“制造”到“智造”,即刻云全程服务
  6. 职场吐槽大会,原来办公软件也有如此多神技能?
  7. php 证书 paypal,php做贝宝(paypal)支付接口
  8. android 浏览器打开应用商店,android/iPhone:如何从browser直接打开应用程序或者没有应用程序打开应用商店...
  9. 网站关键词html代码,html网站代码+网站关键词如何优化呢
  10. 瑞幸点燃导火索,兄弟公司神州租车迎大变局