目录:

  • For-In
  • While
  • If-Else, Guard-Else
  • Switch
  • 控制转移

For-In

可以使用for-in语句循环遍历集合、区间、元组、字符串。

// 遍历区间,返回元素值
for index in ... {
print("(index) times 5 is (index * 5)")
} // 循环区间,忽略元素值
for _ in ...power {
answer *= base
} // 遍历数组
let names = ["Anna", "Alex", "Brian", "Jack"]
for name in names {
print("Hello, (name)!")
} // 遍历字典
let numberOfLegs = ["spider": , "ant": , "cat": ]
for (animalName, legCount) in numberOfLegs {
print("(animalName)s have (legCount) legs")
}
While

可以使用while和repeat-while语句进行条件循环遍历。

while square < finalSquare {
// statements ...
} // 类似其他语言的do-while语句
repeat {
// statements ...
} while square < finalSquare
If-Else, Guard-Else
temperatureInFahrenheit =
if temperatureInFahrenheit <= {
print("It's very cold. Consider wearing a scarf.")
} else if temperatureInFahrenheit >= {
print("It's really warm. Don't forget to wear sunscreen.")
} else {
print("It's not that cold. Wear a t-shirt.")
}

可以使用guard-else语句来要求条件必须为真时,以执行guard语句后的代码。

// person字典中存在key为name的元素时打印name元素值
guard let name = person["name"] else {
return
}
print("Hello \(name)")
Switch

switch语句尝试将某个值与若干个case进行匹配,然后执行第一个匹配成功的case下的代码。

switch语句的每一个可能的值都必须至少有一个case分支与之对应。如果不可能涵盖所有值的情况时,在switch语句最后面使用默认default分支。

switch语句不存在隐式贯穿,即不需要在case下的执行代码中显示使用break。

let someCharacter: Character = "z"
switch someCharacter {
case "a":
print("The first letter of the alphabet")
// case "b": 打开注释后会有编译错误,不存在隐式贯穿
case "c","z": // 复合匹配
print("The last letter of the alphabet")
default:
print("Some other character")
}

case分支的模式也可以是一个值的区间或元组:

// case分支匹配区间
switch approximateCount {
case :
naturalCount = "no"
case ..<:
naturalCount = "a few"
default:
naturalCount = "many"
} // case分支匹配元组
let somePoint = (, )
switch somePoint {
case (, ): // 元组元素是值类型
print("(0, 0) is at the origin")
case (_, ):// 元组元素使用 _ 匹配所有任意值
print("(\(somePoint.0), 0) is on the x-axis")
case (-..., -...): // 元组元素是区间类型
print("(\(somePoint.0), \(somePoint.1)) is inside the box")
}

case分支允许将匹配的值绑定到一个临时的常量或变量,并且在case分支体内使用,还可以使用where来补充case匹配条件。

let yetAnotherPoint = (, )
switch yetAnotherPoint {
case (let x, ):
print("on the x-axis with an x value of \(x)")
case let (x, y) where x == y: // 输出 "(1, -1) is on the line x == y"
print("(\(x), \(y)) is on the line x == y")
case let (x, y):
print("(\(x), \(y)) is just some arbitrary point")
}
控制转移
• continue 结束本次循环执行下次循环
• break 结束当前switch,while语句体,不能结束多层嵌套的switch/while/if语句体。
• fallthrough 用在switch语句中,标示贯穿当前case到下一case中。
• return 返回,可终止多层嵌套的switch/while/if语句体。
• throw 抛出异常,结束执行后面的代码。

continue和break都可以跳转到指定标签的位置执行。

声明:该系列内容均来自网络或电子书籍,只做学习总结!

最新文章

  1. Bellman-Ford 单源最短路径算法
  2. MongoDB安装使用
  3. 实现BaseFragment
  4. sshpass批量执行操作
  5. mina高并发短连接导致java.io.IOException: Too many open files解决方案
  6. switch..case函数的基础使用一
  7. NFinal简介
  8. mysql5.6.16绿色版配置、运行
  9. iOS打包静态库(完整篇)
  10. Android实战简易教程-第三十四枪(基于ViewPager和FragmentPagerAdapter实现滑动通用Tab)
  11. 大话C#之委托
  12. python设计模式第十九天【职责链模式】
  13. python js(JavaScript)初识
  14. ndarray对象的使用方法
  15. 物联网架构成长之路(22)-Docker练习之Etcd服务搭建
  16. python 多版本管理pyenv和virtualenv虚拟开发环境
  17. 【CF888G】Xor-MST Trie树(模拟最小生成树)
  18. Java可重入锁与不可重入锁
  19. [理论篇]一.JavaScript中的死连接`javascript:void(0)`和空连接`javascript:;`
  20. Treasure Exploration---poj2594(传递闭包Floyd+最小路径覆盖)

热门文章

  1. Caffe_Example之训练mnist
  2. UWP tips (与wp8.1的不同)
  3. &lt;改变imageView的颜色和状态栏&gt;
  4. iOS-Core-Animation-Advanced-Techniques/12-性能调优/性能调优.md
  5. 理解UIView的绘制-孙亚洲
  6. Error running Tomcat 6: Address localhost:8080 is already in use
  7. struts2配置 匹配原则 配置各项默认
  8. 分清encodeURIComponent encodeURI 和 escape
  9. frp(升级版)教程
  10. 如何解决zabbix中自定义监控mysql因密码造成的 Warning