Files
the-swift-programming-langu…/source/chapter3/10_Statements.md
2014-06-08 22:24:51 +08:00

10 KiB
Raw Blame History

语句

在 Swift 中有两种类型的语句简单语句和控制流语句。简单语句是最常见的用于构造表达式和声明。控制流语句则用于控制程序执行的流程Swift 中有三种类型的控制流语句:循环语句、分支语句和控制传递语句。

循环语句用于重复执行代码块;分支语句用于执行满足特定条件的代码块;控制传递语句则用于修改代码的执行顺序。在稍后的叙述中,将会详细地介绍每一种类型的控制流语句。

是否将分号(;)添加到语句的结尾处是可选的。但若要在同一行内写多条独立语句,请务必使用分号。

GRAMMAR OF A STATEMENT

statementexpression; opt

statementdeclaration; opt

statementloop-statement; opt

statementbranch-statement; opt

statementlabeled-statement

statementcontrol-transfer-statement; opt

statementstatment statements; opt

循环语句

取决于特定的循环条件循环语句允许重复执行代码块。Swift 提供四种类型的循环语句:for语句、for-in语句、while语句和do-while语句。

通过break语句和continue语句可以改变循环语句的控制流。有关这两条语句,请参考Break 语句待添加链接Continue 语句待添加链接

GRAMMAR OF A LOOP STATEMENT

loop-statementfor-statement

loop-statementfor-in-statement

loop-statementwhile-statement

loop-statementdo-while-statement

For 语句

for语句允许在重复执行代码块的同时,递增一个计数器。

for语句的形式如下:

for `initialzation`; `condition`; `increment` {
	`statements`
}

initialzationconditionincrement之间的分号,以及包围在循环体statements的大括号都是不可省略的。

for语句的执行流程如下:

  1. 执行initialzation,通常用于声明和初始化在接下来的循环中需要使用的变量。

  2. 计算condition表达式: 如果为真(true)statements将会被执行然后转到第3步。如果为假(false)statementsincrement都不会被执行,for至此执行完毕。

  3. 执行increment表达式然后转到第2步。

定义在initialzation中的变量仅在for语句的作用域以内有效。condition表达式的值的类型必须符合LogicValue协议。

GRAMMAR OF A FOR STATEMENT

for-statementfor for-initopt ; expressionopt ; expressionopt code-block

for-statement → **for ( ** for-initopt ; expressionopt ; expressionopt ) code-block

for-statementvariable-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也不会执行statementsfor-in至此执行完毕。

GRAMMAR OF A FOR-IN STATEMENT

for-in-statementfor pattern in expression code-block

While 语句

while语句允许重复执行代码块。

while语句的形式如下:

while `condition` {
	`statements`
}

while语句的执行流程如下:

  1. 计算condition表达式: 如果为真(true)转到第2步。如果为假(false)while至此执行完毕。

  2. 执行statements表达式然后转到第1步。

由于condition的值在statements执行前就已计算出,因此while语句中的statements可能会被执行若干次,也可能不会被执行。

condition表达式的值的类型必须符合LogicValue协议。同时,condition表达式也可以套用可选绑定,请参考可选绑定待添加链接

GRAMMAR OF A WHILE STATEMENT

while-statementwhile while-condition code-block

while-conditionexpression | declaration

Do-While 语句

do-while语句允许代码块被执行一次或多次。

do-while语句的形式如下:

do {
	`statements`
} while `condition`

do-while语句的执行流程如下:

  1. 执行statements表达式然后转到第2步。

  2. 计算condition表达式: 如果为真(true)转到第1步。如果为假(false)do-while至此执行完毕。

由于condition表达式的值是在statements表达式执行后才计算出,因此do-while语句中的statements至少会被执行一次。

condition表达式的值的类型必须符合LogicValue协议。同时,condition表达式也可以套用可选绑定,请参考可选绑定待添加链接

GRAMMAR OF A DO-WHILE STATEMENT

do-while-statementdo code-block while while-condition