<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # `Guard`語句 > 原文: [https://www.programiz.com/swift-programming/guard-statement](https://www.programiz.com/swift-programming/guard-statement) #### 在本文中,您將學習使用`Guard`語句來控制程序執行的流程。 [Swift `If`語句](/swift-programming/if-else-statement "Swift if-else statement")描述了如何根據特定條件(布爾值)執行操作。 在本文中,我們將探討`Guard`語句相對于`if`語句的好處,以控制程序流程并編寫更簡單,更干凈的代碼。 ## `Guard`語句 `Guard`語句的主要用途是在某些條件下將程序控制權移出范圍。 這些語句與`if`語句類似,后者根據特定條件(布爾值)執行語句,但與`if`不同,`guard`語句僅在不滿足特定條件時運行。 而且,`guard`內部的語句必須退出范圍。 因此,我們必須在`guard`語句的末尾使用用戶程序控制語句`return`,`break`,`continue`或`throw`。 * * * ## `guard`語句的語法 ```swift guard expression else { //statements //must contain a control statement:return, break, continue or throw. } ``` * 在這里,`expression`是布爾表達式(返回`true`或`false`)。 * 如果將`expression`求值為`false`,則將執行`guard`代碼塊內部的語句。 * 如果將`expression`求值為`true`,則將跳過`guard`代碼塊內部的語句。 * * * ## `guard`語句如何工作? ![How Swift guard statement works?](https://img.kancloud.cn/6b/53/6b53f3da18e2768a399b8d840079ba86_590x237.png "Swift guard statement") 注意:`guard`語句的末尾必須包含控制語句`return`,`break`,`continue`或`throw`。 * * * ## 示例 1:`guard`語句如何工作? 一個簡單的有效`Guard`語句如下: ```swift guard true else { print("Condition not met") } print("Condition met") ``` 運行該程序時,輸出為: ```swift Condition met ``` 在上面的程序中,`guard`包含一個布爾值`true`(滿足條件)。 由于`guard`語句僅在不滿足條件時運行,因此不會執行`guard`內的語句。 這就是執行`print("Condition met")`并在屏幕上輸出`Condition met`的原因。 現在,將條件更改為`false`: * * * ## 示例 2:`guard`語句必須退出范圍 ```swift guard false else { print("Condition not met") } print("Condition met") ``` 在以上程序中,`guard`條件求值為`false`。 因此,`else`內部的`print("Condition not met")`語句應執行。 但是您會收到一個錯誤消息,說`guard`主體可能不會退出,請考慮使用`return`或`throw`退出示波器。 簡單的錯誤消息表示,您需要使用`return`,`break`,`continue`或`throw`語句從`guard`語句轉移程序控制。 現在,我們將使用`return`。 并且由于`return`語句只能在函數內部使用,因此我們將上述代碼包裝在 *Swift 函數*中。 * * * ## 示例 3:函數內部的`guard`語句 我們可以在 Swift 的[函數中使用 guard 語句:](/swift-programming/functions "Swift functions") ```swift func someFunction() { guard false else { print("Condition not met") return } print("Condition met") } someFunction() print("Hello after function call") ``` 當您運行上述程序時,輸出將是: ```swift Condition not met Hello after function call ``` 在上述程序中,`guard`條件的計算結果為`false`,因此執行`guard`內部的語句。 第一個語句`print("Condition not met")`在控制臺輸出`Condition not met`。 并且語句`return`終止函數的執行,并且執行函數調用后的語句`print("Hello, after function call")`在控制臺中輸出`Hello after function call`。 * * * ## 示例 4:帶有可選項的`guard` 我們已經在[Swift `Optional`](/swift-programming/optionals "Swift Optionals")中看到了`if-let`的使用,以展開可選項。 但是,我們也可以使用`guard`語句代替`if-let`,來展開具有一個優點的可選項。 展開帶`guard`的可選項而不是`if-let`的主要優點是,我們可以擴大展開的變量的范圍。 讓我們在下面的示例中看到這一點: ```swift func changeOptionalStringToUpperCase() { var name:String? guard let temp = name else { print("Name is nil. Cannot process") return } print("Uppercased:\(temp.uppercased())") } changeOptionalStringToUpperCase() ``` 運行該程序時,輸出為: ```swift Name is nil. Cannot process ``` 在上述程序中,您可以看到,在`guard`語句定義的范圍之外使用了未包裝的值`temp`。 由于`name`被定義為可選并且包含`nil`值,因此`guard`語句無法解包該值。 因此,將執行后衛內部的語句,該語句打印`Name is nil. Cannot process`,并使用`return`語句終止函數。 上述`guard`語句`if-else`語句的等效代碼是: ```swift func changeOptionalStringToUpperCase() { var name:String? if let temp = name { print("Uppercased:\(temp.uppercased())") } else { print("Name is nil. Cannot process") return } //how to access temp here?? Solution:Use Guard } changeOptionalStringToUpperCase() ``` 注意上面的兩個語句都是有效的并且執行相同的工作。 但是,使用`if-let`語句不能在`if-let`語句之外使用未包裝的值。 但是,通過使用`Guard`語句,您可以在整個函數中使用未包裝的值。 * * * ## 范例 5:有多種條件的`Guard` `Guard`語句還可以鏈接多個條件,這些條件之間用逗號(`,`)分隔,如下所示: ```swift func changeOptionalStringToUpperCase() { var name:String? = "" guard let temp = name , temp.count > 0 else { print("Name is nil or an empty string. Cannot process") return } print("Uppercased:\(temp.uppercased())") } changeOptionalStringToUpperCase() ``` 運行該程序時,輸出為: ```swift Name is nil or an empty string. Cannot process ``` 在上面的程序中,`guard`語句包含兩個條件,以逗號分隔。 在我們的例子中,第一個條件`let temp = name`解開了一個可選參數,該可選參數返回`true`,第二個條件`temp.count > 0`檢查了已解包的字符串是否包含超過 0 個字符,在我們的示例中,結果為`false`。 因此,`guard`語句內部的語句執行語句`print("Name is nil or an empty string. Cannot process")`,該語句輸出`Name is nil or an empty string. Cannot process`并使用`return`語句終止函數。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看