Repeat-While 语句
repeat-while
语句至少执行一次代码块,之后只要循环条件为真,就会重复执行代码块。
repeat-while
语句的形式如下:
repeat {
语句
} while 条件
repeat-while
语句的执行流程如下:
执行循环体中的语句,然后转到第 2 步。
判断条件的值。如果为 true
,重复第 1 步;如果为 false
,repeat-while
语句至此执行完毕。
由于条件的值是在循环体中的语句执行后才进行判断,因此循环体中的语句至少会被执行一次。
条件的结果必须是Bool类型或者Bool的桥接类型。另外,条件语句也可以使用可选绑定
repeat-while 语句语法
repeat-while 语句 → repeat 代码块 while 表达式
Guard 语句
如果一个或者多个条件不成立,可用 guard 语句用来退出当前作用域。
guard 语句的格式如下:
guard 条件 else {
语句
}
guard 语句中条件的结果必须是Bool类型或者Bool的桥接类型。另外,条件也可以是一条可选绑定。
在 guard 语句中进行可选绑定的常量或者变量,其可用范围从声明开始直到作用域结束。
guard 语句必须有 else 子句,而且必须在该子句中调用 Never 返回类型的函数,或者使用下面的语句退出当前作用域:
- return
- break
- continue
- throw
guard 语句语法
guard 语句 → guard条件子句else 代码块
Fallthrough 语句
fallthrough
语句用于在switch
语句中转移控制权。fallthrough
语句会把控制权从 switch
语句中的一个case
转移到下一个case
。这种控制权转移是无条件的,即使下一个 case
的模式与 switch
语句的控制表达式的值不匹配。
fallthrough
语句可出现在 switch
语句中的任意case
中,但不能出现在最后一个 case
中。同时,fallthrough
语句也不能把控制权转移到使用了值绑定的case
。
fallthrough 语句语法
fallthrough 语句 → fallthrough
Throw 语句
throw
语句出现在抛出函数或者抛出方法体内,或者类型被 throws
关键字标记的闭包表达式体内。
throw
语句使程序在当前作用域结束执行,并向外围作用域传播错误。抛出的错误会一直传递,直到被 do
语句的catch
子句处理掉。
throw
语句由 throw
关键字紧跟一个表达式组成,如下所示:
throw 表达式
表达式的结果必须符合 ErrorType 协议。
throw 语句语法
throw 语句 → throw 表达式
可用性条件
可用性条件可作为 if,while,guard 语句的条件,可以在运行时基于特定的平台参数来查询 API 的可用性。
可用性条件的形式如下:
if #available(平台名称 版本, ..., *) {
如果 API 可用,则执行这部分语句
} else {
如果 API 不可用,则执行这部分语句
}
使用可用性条件来执行一个代码块时,取决于使用的 API 在运行时是否可用,编译器会根据可用性条件提供的信息来决定是否执行相应的代码块。
可用性条件使用一系列逗号分隔的平台名称和版本。使用 iOS,OSX,以及 watchOS 等作为平台名称,并写上相应的版本号。
- 参数是必须写的,用于处理未来的潜在平台。可用性条件确保了运行时的平台不低于条件中指定的平台版本时才执行代码块。
与布尔类型的条件不同,不能用逻辑运算符 && 和 || 组合可用性条件。
可用性条件语法
可用性条件 → #available ()