10 KiB
语句
在 Swift 中,有两种类型的语句:简单语句和控制流语句。简单语句是最常见的,用于构造表达式和声明。控制流语句则用于控制程序执行的流程,Swift 中有三种类型的控制流语句:循环语句、分支语句和控制传递语句。
循环语句用于重复执行代码块;分支语句用于执行满足特定条件的代码块;控制传递语句则用于修改代码的执行顺序。在稍后的叙述中,将会详细地介绍每一种类型的控制流语句。
是否将分号(;)添加到语句的结尾处是可选的。但若要在同一行内写多条独立语句,请务必使用分号。
GRAMMAR OF A STATEMENT
statement → expression; opt
statement → declaration; opt
statement → loop-statement; opt
statement → branch-statement; opt
statement → labeled-statement
statement → control-transfer-statement; opt
statement → statment statements; opt
循环语句
取决于特定的循环条件,循环语句允许重复执行代码块。Swift 提供四种类型的循环语句:for语句、for-in语句、while语句和do-while语句。
通过break语句和continue语句可以改变循环语句的控制流。有关这两条语句,请参考Break 语句待添加链接和Continue 语句待添加链接。
GRAMMAR OF A LOOP STATEMENT
loop-statement → for-statement
loop-statement → for-in-statement
loop-statement → while-statement
loop-statement → do-while-statement
For 语句
for语句允许在重复执行代码块的同时,递增一个计数器。
for语句的形式如下:
for `initialzation`; `condition`; `increment` {
`statements`
}
initialzation、condition和increment之间的分号,以及包围在循环体statements的大括号都是不可省略的。
for语句的执行流程如下:
-
执行initialzation,通常用于声明和初始化在接下来的循环中需要使用的变量。
-
计算condition表达式: 如果为真(
true),statements将会被执行,然后转到第3步。如果为假(false),statements和increment都不会被执行,for至此执行完毕。 -
执行increment表达式,然后转到第2步。
定义在initialzation中的变量仅在for语句的作用域以内有效。condition表达式的值的类型必须符合LogicValue协议。
GRAMMAR OF A FOR STATEMENT
for-statement → for for-initopt ; expressionopt ; expressionopt code-block
for-statement → **for ( ** for-initopt ; expressionopt ; expressionopt ) code-block
for-statement → variable-declaration | expression-list
For-In 语句
for-in语句允许在重复执行代码块的同时,迭代集合(或符合Sequence协议的任意类型)中的每一项。
for-in语句的形式如下:
for `item` in `collection` {
`statements`
}
for-in语句在循环开始前会调用collection表达式的generate方法来获取一个生成器类型(这是一个符合Generator协议的类型)的值。接下来循环开始,调用collection表达式的next方法。如果其返回值不是None,它将会被赋给item,然后执行statements,执行完毕后回到循环开始处;否则,将不会赋值给item也不会执行statements,for-in至此执行完毕。
GRAMMAR OF A FOR-IN STATEMENT
for-in-statement → for pattern in expression code-block
While 语句
while语句允许重复执行代码块。
while语句的形式如下:
while `condition` {
`statements`
}
while语句的执行流程如下:
-
计算condition表达式: 如果为真(
true),转到第2步。如果为假(false),while至此执行完毕。 -
执行statements表达式,然后转到第1步。
由于condition的值在statements执行前就已计算出,因此while语句中的statements可能会被执行若干次,也可能不会被执行。
condition表达式的值的类型必须符合LogicValue协议。同时,condition表达式也可以套用可选绑定,请参考可选绑定待添加链接。
GRAMMAR OF A WHILE STATEMENT
while-statement → while while-condition code-block
while-condition → expression | declaration
Do-While 语句
do-while语句允许代码块被执行一次或多次。
do-while语句的形式如下:
do {
`statements`
} while `condition`
do-while语句的执行流程如下:
-
执行statements表达式,然后转到第2步。
-
计算condition表达式: 如果为真(
true),转到第1步。如果为假(false),do-while至此执行完毕。
由于condition表达式的值是在statements表达式执行后才计算出,因此do-while语句中的statements至少会被执行一次。
condition表达式的值的类型必须符合LogicValue协议。同时,condition表达式也可以套用可选绑定,请参考可选绑定待添加链接。
GRAMMAR OF A DO-WHILE STATEMENT
do-while-statement → do code-block while while-condition