控制传递语句
通过无条件地把控制权从一片代码传递到另一片代码,控制传递语句能够改变代码执行的顺序。Swift 提供四种类型的控制传递语句:break
语句、continue
语句、fallthrough
语句和return
语句。
控制传递语句(Control Transfer Statement) 语法
控制传递语句 → break语句
控制传递语句 → continue语句
控制传递语句 → fallthrough语句
控制传递语句 → return语句
Break 语句
break
语句用于终止循环或switch
语句的执行。使用break
语句时,可以只写break
这个关键词,也可以在break
后面跟上标签名(label name),像下面这样:
break
breaklabel name
当break
语句后面带标签名时,可用于终止由这个标签标记的循环或switch
语句的执行。
而当只写break
时,则会终止switch
语句或上下文中包含break
语句的最内层循环的执行。
在这两种情况下,控制权都会被传递给循环或switch
语句外面的第一行语句。
关于使用break
语句的例子,详情参见控制流一章的 Break 和带标签的语句。
Break 语句语法
break语句 → break 标签名称 可选
Continue 语句
continue
语句用于终止循环中当前迭代的执行,但不会终止该循环的执行。使用continue
语句时,可以只写continue
这个关键词,也可以在continue
后面跟上标签名(label name),像下面这样:
continue
continuelabel name
当continue
语句后面带标签名时,可用于终止由这个标签标记的循环中当前迭代的执行。
而当只写break
时,可用于终止上下文中包含continue
语句的最内层循环中当前迭代的执行。
在这两种情况下,控制权都会被传递给循环外面的第一行语句。
在for
语句中,continue
语句执行后,increment 表达式还是会被计算,这是因为每次循环体执行完毕后increment 表达式都会被计算。
关于使用continue
语句的例子,详情参见控制流一章的 Continue 和带标签的语句。
Continue 语句语法
continue语句 → continue 标签名称 可选
Fallthrough 语句
fallthrough
语句用于在switch
语句中传递控制权。fallthrough
语句会把控制权从switch
语句中的一个 case 传递给下一个 case 。这种传递是无条件的,即使下一个 case 的模式与switch
语句的控制表达式的值不匹配。
fallthrough
语句可出现在switch
语句中的任意 case 里,但不能出现在最后一个 case 分支中。同时,fallthrough
语句也不能把控制权传递给使用了可选绑定的 case 分支。
关于在switch
语句中使用fallthrough
语句的例子,详情参见控制流一章的控制传递语句。
Fallthrough 语句语法
fallthrough语句 → fallthrough
Return 语句
return
语句用于在函数或方法的实现中将控制权传递给调用者,接着程序将会从调用者的位置继续向下执行。
使用return
语句时,可以只写return
这个关键词,也可以在return
后面跟上表达式,像下面这样:
return
returnexpression
当return
语句后面带表达式时,表达式的值将会返回给调用者。如果表达式值的类型与调用者期望的类型不匹配,Swift 则会在返回表达式的值之前将表达式值的类型转换为调用者期望的类型。
而当只写return
时,仅仅是将控制权从该函数或方法传递给调用者,而不返回一个值。(这就是说,该函数或方法的返回类型为Void
或()
)
Return 语句语法
return语句 → return 表达式 可选
易百教程移动端:请扫描本页面底部(右侧)二维码并关注微信公众号,回复:"教程" 选择相关教程阅读或直接访问:http://m.yiibai.com 。
加QQ群啦,易百教程官方技术学习群
注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。
- Java技术群: 227270512 (人数:2000,免费:否)
- Go开发者群(新): 851549018 (人数:1000,免费)
- PHP开发者群: 460153241 (人数:2000,免费)
- MySQL/SQL群: 418407075 (人数:2000,免费:否)
- 大数据开发群: 655154550 (人数:2000,免费:否)
- Python技术群: 287904175 (人数:2000,免费:否)
- 人工智能深度学习: 456236082 (人数:2000,免费:否)
- 测试工程师群: 415553199 (人数:2000,免费:否)
- 前端开发者群: 410430016 (人数:2000,免费:否)
- C/C++技术群(新): 629264796 (人数:2000,免费)
- Node.js技术群(新): 621549808 (人数:2000,免费)
- PostgreSQL数据库群: 539504187 (人数:1000,免费)
- Linux运维技术群: 479429477 (人数:2000,免费:否)
- Oracle数据库: 175248146 (人数:2000,免费:否)
- C#/ASP.Net开发者: 579821706 (人数:2000,免费)
- 数据分析师群: 397883996 (人数:2000,免费:否)