提交 1146de33 编写于 作者: W wizardforcel

2020-07-07 17:33:49

上级 30ac4df0
# 快速的 while 并重复 while 循环
# 快速的`while`并重复`while`循环
> 原文: [https://www.programiz.com/swift-programming/repeat-while-loop](https://www.programiz.com/swift-programming/repeat-while-loop)
#### 在本文中,您将学习在 Swift 编程中创建 while 并重复... while 循环。
#### 在本文中,您将学习在 Swift 编程中创建`while`并`repeat..while`循环。
在上一篇文章中,我们了解了 [for-in 循环](/swift-programming/for-in-loop "Swift for-in loop"),用于在一定次数下运行一组任务。 在本文中,您将学习在未知迭代次数时使用`while``repeat..while`作为 for-in 循环的替代方法。
在上一篇文章中,我们了解了[`for-in`循环](/swift-programming/for-in-loop "Swift for-in loop"),用于在一定次数下运行一组任务。 在本文中,您将学习在未知迭代次数时使用`while``repeat..while`作为`for-in`循环的替代方法。
while 循环执行一组语句,直到条件变为`false`为止。 当第一次迭代开始之前未知迭代次数时,最好使用此类循环。 Swift 提供了两种 while 循环:
`while`循环执行一组语句,直到条件变为`false`为止。 当第一次迭代开始之前未知迭代次数时,最好使用此类循环。 Swift 提供了两种`while`循环:
* * *
## 1\. Swift While 循环
## 1\. Swift `While`循环
该循环在每次通过循环的开始时求值其条件。
while 循环的语法为:
`while`循环的语法为:
```swift
while (TestExpression) {
......@@ -24,26 +24,26 @@ while (TestExpression) {
* * *
### while 循环如何工作?
### `while`循环如何工作?
`TestExpression`是布尔表达式。
如果将`TestExpression`求值为`true`
* while 循环内的语句被执行。
* `while`循环内的语句被执行。
* 并再次求值`TestExpression`
该过程一直进行到`TestExpression`求值为`false`为止。 如果`TestExpression`求值为`false`,则 while 循环终止。
该过程一直进行到`TestExpression`求值为`false`为止。 如果`TestExpression`求值为`false`,则`while`循环终止。
* * *
### While 循环流程图
### `While`循环流程图
![Swift while loop flowchart](img/bf8ebb093c13c62cfa55610bdc163b19.png "Swift while loop flowchart")
* * *
### 示例 1:While 循环
### 示例 1:`While`循环
```swift
var currentLevel:Int = 0, finalLevel:Int = 5
......@@ -72,27 +72,27 @@ outside of while loop
在上述程序中,变量`currentLevel``finalLevel`初始化为 0,常量`gameCompleted`初始化为`true`
while 循环的每次迭代中,它都会检查条件`currentLevel <= finalLevel`。 如果条件返回`true`,则执行 while 循环内的语句,否则循环终止。
`while`循环的每次迭代中,它都会检查条件`currentLevel <= finalLevel`。 如果条件返回`true`,则执行`while`循环内的语句,否则循环终止。
Execution steps
| 迭代 | 条件(currentLevel < = finalLevel) | 输出量 |
| 迭代 | 条件(`currentLevel <= finalLevel`) | 输出 |
| --- | --- | --- |
| 1 | 0 < = 5(真) | **您已通过 0 级** |
| 2 | 1 < = 5(真) | **您已通过 1 级** |
| 3 | 2 < = 5(真) | **您已经通过了 2 级** |
| 4 | 3 < = 5(真) | **您已通过 3 级** |
| 5 | 4 < = 5(真) | **您已通过 4 级** |
| 6 | 5 < = 5(真) | **您已通过 5 级** |
| 7 | 6 < = 5(假) | while 循环之外的 |
| 1 |` 0 <= 5`(真) | `You have passed level 0` |
| 2 | `1 <= 5`(真) | `You have passed level 1` |
| 3 | `2 <= 5`(真) | `You have passed level 2` |
| 4 | `3 <= 5`(真) | `You have passed level 3` |
| 5 | `4 <= 5`(真) | `You have passed level 4` |
| 6 | `5 <= 5`(真) | `You have passed level 5` |
| 7 | `6 <= 5`(假) | `outside of while loop ` |
* * *
## 2.循环时重复
## 2.`repeat...while`循环
该循环在每次循环结束时求值其条件。repeat ... while 循环类似于 while 循环,但有一个关键区别。 在检查测试表达式之前,执行一次 repeat ... while 循环主体。
该循环在每次循环结束时求值其条件。`repeat...while`循环类似于`while`循环,但有一个关键区别。 在检查测试表达式之前,执行一次`repeat ... while`循环主体。
repeat..while 循环的语法为:
`repeat..while`循环的语法为:
```swift
repeat {
......@@ -103,23 +103,23 @@ repeat {
* * *
### 重复... while 循环如何工作?
### `repeat...while`循环如何工作?
repeat ... while 循环的主体执行一次(在检查测试表达式之前)。 只有这样,才检查`testExpression`
`repeat...while`循环的主体执行一次(在检查测试表达式之前)。 只有这样,才检查`testExpression`
如果将`testExpression`求值为`true`,则执行循环体内的语句,然后再次求值`testExpression`。 该过程一直进行到`testExpression`求值为`false`为止。
`testExpression``false`时,repeat..while 循环终止。
`testExpression``false`时,`repeat..while`循环终止。
* * *
### 重复... while 循环的流程图
### `repeat...while`循环的流程图
![Swift repeat..while loop flowchart](img/8196f58c6f075e2d0ea80b8f6e9ad8f2.png "Swift repeat..while loop flowchart")
* * *
### 示例 2:在 while 循环中重复
### 示例 2:`repeat...while`循环
```swift
var currentLevel:Int = 0, finalLevel:Int = 5
......@@ -148,19 +148,19 @@ outside of repeat while loop
在上面的示例中,循环内的语句首次执行。 对于下一次迭代,它将检查条件`currentLevel <= finalLevel`
如果条件返回`true`,则执行 while 循环内的语句,否则循环终止。
如果条件返回`true`,则执行`while`循环内的语句,否则循环终止。
Execution steps
| Iteration | Condition (currentLevel <= finalLevel) | Output |
| --- | --- | --- |
| 1 | 0 <= 5 (true) | **You have passed level 0** |
| 2 | 1 <= 5 (true) | **You have passed level 1** |
| 3 | 2 <= 5 (true) | **You have passed level 2** |
| 4 | 3 <= 5 (true) | **You have passed level 3** |
| 5 | 4 <= 5 (true) | **You have passed level 4** |
| 6 | 5 <= 5 (true) | **You have passed level 5** |
| 7 | 6 <= 5 (false) | **在循环 while 循环**之外 |
| 1 | `0 <= 5``true`) | `You have passed level 0` |
| 2 | `1 <= 5``true`) | `You have passed level 1` |
| 3 | `2 <= 5``true`) | `You have passed level 2` |
| 4 | `3 <= 5``true`) | `You have passed level 3` |
| 5 | `4 <= 5``true`) | `You have passed level 4` |
| 6 | `5 <= 5``true`) | `You have passed level 5` |
| 7 | `6 <= 5``false`) | `outside of repeat while loop ` |
尽管`while``repeat while`循环具有相同的执行步骤,但是`repeat while`循环上的条件`currentLevel <= finalLevel`仅在执行其中的语句之后才执行。
......@@ -172,7 +172,7 @@ Execution steps
如果测试表达式的取值从未为`false`,则`while``repeat..while`循环的主体将执行无数次。
### 示例 3:无限 while 循环
### 示例 3:无限`while`循环
```swift
while (true) {
......
......@@ -4,7 +4,7 @@
#### 在本文中,您将通过示例了解嵌套循环及其工作方式。
如果另一个循环体内存在一个循环,则称为嵌套循环。 这是嵌套的 for-in 循环的示例。
如果另一个循环体内存在一个循环,则称为嵌套循环。 这是嵌套的`for-in`循环的示例。
```swift
for i in 1...5 {
......@@ -19,13 +19,13 @@ for i in 1...5 {
在此,称为`for j in 1...2`的内部循环位于`for i in 1...5`的主体内部,称为外部循环。
应该注意的是,嵌套循环可能不包含相同类型的循环。 例如,您可以将一个 while 循环放在 for 循环的主体内,但它仍然是嵌套循环。
应该注意的是,嵌套循环可能不包含相同类型的循环。 例如,您可以将一个`while`循环放在`for`循环的主体内,但它仍然是嵌套循环。
* * *
## Swift 嵌套循环
嵌套 [for-in 循环](/swift-programming/for-in-loop "Swift for-in loop")在另一个 for-in 循环中包含一个 for-in 循环作为语句。 您可以根据需要具有任意数量的嵌套 for-in 循环。
嵌套 [for-in 循环](/swift-programming/for-in-loop "Swift for-in loop")在另一个`for-in`循环中包含一个`for-in`循环作为语句。 您可以根据需要具有任意数量的嵌套`for-in`循环。
### 示例 1:Swift 嵌套循环
......@@ -73,11 +73,11 @@ i = 5; j = 2
* * *
## Swift 嵌套 while 循环
## Swift 嵌套`while`循环
嵌套的 [while 循环](/swift-programming/repeat-while-loop "Swift while loop")在另一个 while 循环中包含一个 while 循环作为语句。 您可以根据需要具有任意数量的嵌套 while 循环。
嵌套的[`while`循环](/swift-programming/repeat-while-loop "Swift while loop")在另一个`while`循环中包含一个`while`循环作为语句。 您可以根据需要具有任意数量的嵌套`while`循环。
### 示例 2:Swift 嵌套 while 循环
### 示例 2:Swift 嵌套`while`循环
```swift
var i = 1
......@@ -99,7 +99,7 @@ while i <= 5 {
## Swift 嵌套重复循环
嵌套的[重复 while 循环](/swift-programming/repeat-while-loop#repeat-while "Swift repeat-while loop")包含一个 while 重复循环,作为另一个 repeat-while 循环中的语句。 您可以根据需要具有任意数量的嵌套 while 循环。
嵌套的[`repeat-while`循环](/swift-programming/repeat-while-loop#repeat-while "Swift repeat-while loop")包含一个`while`重复循环,作为另一个`repeat-while`循环中的语句。 您可以根据需要具有任意数量的嵌套`while`循环。
### 示例 3:Swift 嵌套重复循环
......@@ -125,9 +125,9 @@ The output of the program is same as the above program.
不必具有相同类型的嵌套循环。 您还可以通过将一种类型的循环放入其他类型的循环中来创建嵌套循环的变体。
### 示例 3:while 和 for 的 Swift 嵌套循环
### 示例 3:`while`和`for`的 Swift 嵌套循环
下面的程序包含不同类型的嵌套循环(while 和 for-in 循环)。
下面的程序包含不同类型的嵌套循环(`while``for-in`循环)。
```swift
var i = 1
......
# 速决声明
# `break`语句
> 原文: [https://www.programiz.com/swift-programming/break-statement](https://www.programiz.com/swift-programming/break-statement)
#### 在本文中,您将学习使用 break 语句来转移程序的控制权。
#### 在本文中,您将学习使用`break`语句来转移程序的控制权。
使用循环或条件语句时,可能需要跳过循环中的某些语句或立即终止循环,而不检查测试表达式
在这种情况下,将使用 break 和 Continue 语句。 在下一章中,您将了解[继续语句](/swift-programming/continue-statement "Swift continue statement")
在这种情况下,将使用`break``Continue`语句。 在下一章中,您将了解[`Continue`语句](/swift-programming/continue-statement "Swift continue statement")
break 语句停止执行循环或 switch 语句。 然后,它跳转到 loop 或 switch 语句之后的下一个语句。
`break`语句停止执行循环或`switch`语句。 然后,它跳转到`loop``switch`语句之后的下一个语句。
break 语句的语法为:
`break`语句的语法为:
```swift
break
......@@ -18,13 +18,13 @@ break
* * *
## break 语句如何工作?
## `break`语句如何工作?
![Swift break statement](img/917b525cf13bfd771a9d59769258bbad.png "How Swift break statement works?")
* * *
## 示例 1:for 循环中的 Swift break 语句
## 示例 1:`for`循环中的 Swift `break`语句
```swift
for i in 1...5 {
......@@ -49,13 +49,13 @@ The end
`i`的值设置为范围(1)中的第一个数字,并在每次迭代时更新为范围的下一个数字。
该循环还包含带有表达式`i == 4` if 语句。 当表达式为真(第 4 次迭代)时,将执行`break`语句,并且 [for-in 循环](/swift-programming/for-in-loop)终止。
该循环还包含带有表达式`i == 4``if`语句。 当表达式为真(第 4 次迭代)时,将执行`break`语句,并且[`for-in`循环](/swift-programming/for-in-loop)终止。
然后,它跳出循环以打印**末尾**
* * *
## 示例 2:while 循环中的 Swift break 语句
## 示例 2:`while`循环中的 Swift `break`语句
```swift
var currentLevel:Int = 1, finalLevel:Int = 2
......@@ -82,13 +82,13 @@ Game Completed. No level remaining
outside of while loop
```
在上面的程序中,while 循环的测试表达式始终为`true`
在上面的程序中,`while`循环的测试表达式始终为`true`
`currentLevel`大于`finalLevel`时,将执行 if 块内的`break`语句。 然后,程序退出(终止)while 循环,并在循环之后执行语句,即`print("outside of while loop")` ..
`currentLevel`大于`finalLevel`时,将执行`if`块内的`break`语句。 然后,程序退出(终止)`while`循环,并在循环之后执行语句,即`print("outside of while loop")`
* * *
## 示例 3:带嵌套循环的 Swift break 语句
## 示例 3:带嵌套循环的 Swift `break`语句
```swift
for j in 1...2 {
......@@ -123,15 +123,15 @@ j = 2
## 带中断的标记语句
前缀为(label:Statement)形式的语句称为带标签的语句。 标签是一个标识符,您可以稍后在 break 或 continue 语句中引用它。 要了解有关标记语句的更多信息,请访问 *Swift 标记语句*
前缀为(`label: Statement`)形式的语句称为带标签的语句。 标签是一个标识符,您可以稍后在`break``continue`语句中引用它。 要了解有关标记语句的更多信息,请访问 *Swift 标记语句*
### 带中断的标记语句如何工作?
### 带标签`break`语句如何工作?
![labeled statement witb break](img/57eac5d60e2b33b44d0467877bcdabdf.png "How labeled statement witb break works?")
在此,`label`是标识符。 执行`break`语句时,它将终止`label`内部的循环,程序将立即跳转到该标签后的语句。
### 例 4:带有 break 的标记语句
### 例 4:带标签的`break`语句
```swift
outerloop: for j in 1...2{
......@@ -159,4 +159,4 @@ i = 3
语句`break outerloop`终止两个循环并结束程序。
如果您熟悉其他编程语言,例如 C,C++ ,Java 等,则`break`语句用于终止 switch 语句。 但是在 Wwift 中,switch 语句在第一个匹配的 switch 用例完成后立即完成其执行。 因此,在 Swift 的 switch 案例中添加 break 是可选的。 要了解更多信息,请访问 [Swift switch 语句](/swift-programming/switch-statement "Swift switch statement")
\ No newline at end of file
如果您熟悉其他编程语言,例如 C,C++ ,Java 等,则`break`语句用于终止`switch`语句。 但是在 Wwift 中,`switch`语句在第一个匹配的`switch`用例完成后立即完成其执行。 因此,在 Swift 的`switch`案例中添加`break`是可选的。 要了解更多信息,请访问 [Swift `switch`语句](/swift-programming/switch-statement "Swift switch statement")
\ No newline at end of file
# 迅速继续声明
# `continue`语句
> 原文: [https://www.programiz.com/swift-programming/continue-statement](https://www.programiz.com/swift-programming/continue-statement)
#### 在本文中,您将学习使用 continue 语句来转移程序的控制权。
#### 在本文中,您将学习使用`continue`语句来转移程序的控制权。
使用循环或条件语句时,可能需要跳过循环内的某些语句或立即终止循环,而不检查测试表达式。
在这种情况下,将使用 break 和 Continue 语句。 访问页面以了解有关 [break 语句](/swift-programming/break-statement "Swift break statement")的更多信息。
在这种情况下,将使用`break``Continue`语句。 访问页面以了解有关[`break`语句](/swift-programming/break-statement "Swift break statement")的更多信息。
Continue 语句停止在循环或 switch 语句内执行语句。 然后,它会跳回以再次求值循环的测试表达式。
`Continue`语句停止在循环或`switch`语句内执行语句。 然后,它会跳回以再次求值循环的测试表达式。
Continue 语句的语法为:
`Continue`语句的语法为:
```swift
continue
......@@ -18,13 +18,13 @@ continue
* * *
## 继续语句如何工作?
## `continue`语句如何工作?
![Swif continue statement](img/53b50742cc33de7059f81299958d0c78.png "How Swif continue statement works?")
* * *
## 示例 1:for 循环中的 Swift 继续语句
## 示例 1:`for`循环中的 Swift `continue`语句
```swift
for i in 1...5 {
......@@ -48,11 +48,11 @@ i = 5
`i`的值设置为范围(1)中的第一个数字,并在每次迭代时更新为范围的下一个数字。
该循环还包含带有表达式`i == 4` if 语句。 当表达式为真时(第 4 次迭代),该表达式将执行`continue`语句,跳过语句`print("i = \(i)")`的执行并移至下一个迭代(i = 5)。
该循环还包含带有表达式`i == 4``if`语句。 当表达式为真时(第 4 次迭代),该表达式将执行`continue`语句,跳过语句`print("i = \(i)")`的执行并移至下一个迭代(`i = 5`)。
* * *
## 示例 2:while 循环中的 Swift Continue 语句
## 示例 2:`while`循环中的 Swift `Continue`语句
```swift
var intialLevel:Int = -5, finalLevel:Int = 2
......@@ -80,13 +80,13 @@ next level
outside of while loop
```
在上面的程序中,while 循环运行直到`currentLevel`小于`finalLevel`为止。 由于`intialLevel`被分配值为-5 并且小于 0,因此将执行`if`内部的语句。
在上面的程序中,`while`循环运行直到`currentLevel`小于`finalLevel`为止。 由于`intialLevel`被分配值为 -5 并且小于 0,因此将执行`if`内部的语句。
当程序到达`continue`语句时,它将跳过 while 循环的语句,并再次跳转以检查条件`currentLevel < finalLevel`
当程序到达`continue`语句时,它将跳过`while`循环的语句,并再次跳转以检查条件`currentLevel < finalLevel`
* * *
## 示例 3:带嵌套循环的 Swift 继续语句
## 示例 3:带嵌套循环的 Swift `continue`语句
```swift
for j in 1...2 {
......@@ -114,23 +114,23 @@ i = 3
i = 5
```
在上面的程序中,`if i == 4`内的`continue`语句仅跳过内部 for 循环内的`print("i = \(i)")`语句的执行。 但是,它不会跳过外循环`for i in 1...5`的执行。
在上面的程序中,`if i == 4`内的`continue`语句仅跳过内部`for`循环内的`print("i = \(i)")`语句的执行。 但是,它不会跳过外循环`for i in 1...5`的执行。
但是,如果您也想`continue`外循环该怎么办。 为此,您需要在 Swift 中使用带标签的语句。
* * *
## 带继续标记的语句
## 带标签`continue`的语句
前缀为(label:Statement)形式的语句称为带标签的语句。 标签是一个标识符,您可以稍后在 break 或 continue 语句中引用它。 要了解有关标记语句的更多信息,请访问 *Swift 标记语句*
前缀为(`label:Statement`)形式的语句称为带标签的语句。 标签是一个标识符,您可以稍后在`break``continue`语句中引用它。 要了解有关标记语句的更多信息,请访问 *Swift 标记语句*
### 带 continue 的标记语句如何工作?
### 带标签`continue`的语句如何工作?
![Swift labeled statement with continue](img/b54f02ec7f4a68b1da120c7861967f48.png "How Swift labeled statement with continue works?")
在此,`label`是标识符。 当执行`continue`语句时,程序将跳过循环中其余的代码,并跳转到`label`开始的语句。
### 示例 4:带有继续的标签语句
### 示例 4:带标签的`continue`语句
```swift
outerloop: for j in 1...2 {
......
# 迅速的警卫声明
# `Guard`语句
> 原文: [https://www.programiz.com/swift-programming/guard-statement](https://www.programiz.com/swift-programming/guard-statement)
#### 在本文中,您将学习使用 Guard 语句来控制程序执行的流程。
#### 在本文中,您将学习使用`Guard`语句来控制程序执行的流程。
[Swift If 语句](/swift-programming/if-else-statement "Swift if-else statement")描述了如何根据特定条件(布尔值)执行操作。 在本文中,我们将探讨 Guard 语句相对于 if 语句的好处,以控制程序流程并编写更简单,更干净的代码。
[Swift `If`语句](/swift-programming/if-else-statement "Swift if-else statement")描述了如何根据特定条件(布尔值)执行操作。 在本文中,我们将探讨`Guard`语句相对于`if`语句的好处,以控制程序流程并编写更简单,更干净的代码。
## 快速卫队声明
## `Guard`语句
Guard 语句的主要用途是在某些条件下将程序控制权移出范围。 这些语句与 if 语句类似,后者根据特定条件(布尔值)执行语句,但与 if 不同,guard 语句仅在不满足特定条件时运行。
`Guard`语句的主要用途是在某些条件下将程序控制权移出范围。 这些语句与`if`语句类似,后者根据特定条件(布尔值)执行语句,但与`if`不同,`guard`语句仅在不满足特定条件时运行。
而且,保护内部的语句必须退出范围。 因此,我们必须在保护语句的末尾使用用户程序控制语句`return``break``continue``throw`
......@@ -38,9 +38,9 @@ guard expression else {
* * *
## 示例 1:保护声明如何工作?
## 示例 1:`guard`语句如何工作?
一个简单的有效警卫声明如下:
一个简单的有效`Guard`语句如下:
```swift
guard true else {
......@@ -55,13 +55,13 @@ print("Condition met")
Condition met
```
在上面的程序中,guard 包含一个布尔值 true(满足条件)。 由于 guard 语句仅在不满足条件时运行,因此不会执行 guard 内的语句。 这就是执行`print("Condition met")`并在屏幕上输出**条件满足**的原因。
在上面的程序中,`guard`包含一个布尔值`true`(满足条件)。 由于`guard`语句仅在不满足条件时运行,因此不会执行`guard`内的语句。 这就是执行`print("Condition met")`并在屏幕上输出**条件满足**的原因。
现在,将条件更改为 false
现在,将条件更改为`false`
* * *
## 示例 2:guard 语句必须退出范围
## 示例 2:`guard`语句必须退出范围
```swift
guard false else {
......@@ -70,13 +70,13 @@ guard false else {
print("Condition met")
```
在以上程序中,保护条件求值为`false`。 因此,else 内部的`print("Condition not met")`语句应执行。 但是您会收到一个错误消息,说**的“守卫”机体可能不会掉落,请考虑使用“返回”或“投掷”退出示波器。**
在以上程序中,保护条件求值为`false`。 因此,`else`内部的`print("Condition not met")`语句应执行。 但是您会收到一个错误消息,说`guard`主体可能不会退出,请考虑使用`return``throw`退出示波器。
简单的错误消息表示,您需要使用`return``break``continue``throw`语句从保护语句转移程序控制。 现在,我们将使用`return`。 并且由于`return`语句只能在函数内部使用,因此我们将上述代码包装在 *Swift Functions* 中。
* * *
## 示例 3:函数内部的保护语句
## 示例 3:函数内部的`guard`语句
我们可以在 Swift 的[函数中使用 guard 语句:](/swift-programming/functions "Swift functions")
......@@ -103,13 +103,13 @@ Hello after function call
在上述程序中,保护条件的计算结果为`false`,因此执行保护内部的语句。 第一个语句`print("Condition not met")`输出**在控制台中不满足**的条件。
并且语句`return`终止函数的执行,并且执行函数调用后的语句`print("Hello, after function call")`在控制台中在函数调用之后输出 **Hello。**
并且语句`return`终止函数的执行,并且执行函数调用后的语句`print("Hello, after function call")`在控制台中输出`Hello after function call `
* * *
## 示例 4:带有可选组件的防护
## 示例 4:带有可选组件的`guard`
我们已经在 [Swift Optionals](/swift-programming/optionals "Swift Optionals") 中看到了`if-let`的使用,以展开可选项。 但是,我们也可以使用保护声明代替`if-let`来展开具有一个优点的可选项。 展开带保护的可选项而不是`if-let`的主要优点是,我们可以扩大展开的变量的范围。
我们已经在[Swift `Optional`](/swift-programming/optionals "Swift Optionals")中看到了`if-let`的使用,以展开可选项。 但是,我们也可以使用保护声明代替`if-let`来展开具有一个优点的可选项。 展开带保护的可选项而不是`if-let`的主要优点是,我们可以扩大展开的变量的范围。
让我们在下面的示例中看到这一点:
......@@ -133,9 +133,9 @@ When you run the above program, the output will be:
Name is nil. Cannot process
```
在上述程序中,您可以看到在保护声明定义的范围之外使用了未包装的值`temp`。 由于`name`被定义为可选并且包含 nil 值,因此 guard 语句无法解包该值。
在上述程序中,您可以看到在保护声明定义的范围之外使用了未包装的值`temp`。 由于`name`被定义为可选并且包含`nil`值,因此`guard`语句无法解包该值。
因此,将执行后卫内部的语句,该语句打印**名称为 nil。 无法在输出中处理**,并使用`return`语句终止函数。 上述保护语句 if-else 语句的等效代码是:
因此,将执行后卫内部的语句,该语句打印`Name is nil. Cannot process`,并使用`return`语句终止函数。 上述保护语句`if-else`语句的等效代码是:
```swift
func changeOptionalStringToUpperCase() {
......@@ -153,13 +153,13 @@ func changeOptionalStringToUpperCase() {
changeOptionalStringToUpperCase()
```
注意上面的两个语句都是有效的并且执行相同的工作。 但是,使用 if-let 语句不能在 if-let 语句之外使用未包装的值。 但是,通过使用警卫声明,您可以在整个函数中使用未包装的值。
注意上面的两个语句都是有效的并且执行相同的工作。 但是,使用`if-let`语句不能在`if-let`语句之外使用未包装的值。 但是,通过使用`Guard`语句,您可以在整个函数中使用未包装的值。
* * *
## 范例 5:有多种条件的守卫
## 范例 5:有多种条件的`Guard`
Guard 语句还可以链接多个条件,这些条件之间用逗号(,)分隔,如下所示:
`Guard`语句还可以链接多个条件,这些条件之间用逗号(`,`)分隔,如下所示:
```swift
func changeOptionalStringToUpperCase() {
......@@ -180,8 +180,8 @@ When you run the above program, the output will be:
Name is nil or an empty string. Cannot process
```
在上面的程序中,guard 语句包含两个条件,以逗号分隔。
在上面的程序中,`guard`语句包含两个条件,以逗号分隔。
在我们的例子中,第一个条件`let temp = name`解开了一个可选参数,该可选参数返回`true`,第二个条件`temp.count > 0`检查了已解包的字符串是否包含超过 0 个字符,在我们的示例中,结果为`false`
因此,guard 语句内部的语句执行语句`print("Name is nil or an empty string. Cannot process")`,该语句输出**名称为 nil 或空字符串。 无法在控制台中处理**并使用`return`语句终止功能。
\ No newline at end of file
因此,`guard`语句内部的语句执行语句`print("Name is nil or an empty string. Cannot process")`,该语句输出`Name is nil or an empty string. Cannot process`并使用`return`语句终止功能。
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册