<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>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # `switch`語句 > 原文: [https://www.programiz.com/swift-programming/switch-statement](https://www.programiz.com/swift-programming/switch-statement) #### 在本文中,您將學習使用`switch`控制語句來控制程序執行的流程。 `switch`語句也是各種 Swift 控制語句,例如[`if-else`](/swift-programming/if-else-statement "Swift if-else statement"),[`guard`](/swift-programming/guard-statement)等,根據不同的條件執行不同的動作。 `switch`語句的優點在于,它可以將值與幾種可能的匹配模式進行比較。 因此,它可以在匹配復雜模式時用作長`if..else..if`梯形圖的替代品。 * * * ## `switch`語句的語法 `switch`語句的語法為: ```swift switch variable/expression { case value1: // statements case value2: // statements default: // statements } ``` * * * ## Swift 中的`Switch`語句如何工作? * `switch`表達式只計算一次。 * 它采用表達式并按順序(上->下)與每個個案值進行比較。 * 如果存在匹配項,則將執行`case`內的語句,并在第一個匹配的`switch case`完成后立即完成整個`switch`語句的執行。 * 如果沒有匹配的情況,則落到下一個情況。 * 如果沒有匹配的情況,則`default`關鍵字指定要運行的代碼。 ![Swift switch statement flowchart](https://img.kancloud.cn/a3/1e/a31ea2afbb609e9ab7e837d7f93bf36b_313x435.png "Swift switch statement flowchart") **注意**:每種情況的正文都必須至少包含一個可執行語句。 * * * ### 示例 1:使用`Switch`語句的簡單程序 ```swift let dayOfWeek = 4 switch dayOfWeek { case 1: print("Sunday") case 2: print("Monday") case 3: print("Tuesday") case 4: print("Wednesday") case 5: print("Thursday") case 6: print("Friday") case 7: print("Saturday") default: print("Invalid day") } ``` 當您運行上述程序時,輸出將是: ```swift Wednesday ``` 在上述程序中,`switch`語句通過將`dayOfWeek`值與`case 1`匹配來開始。 由于`dayOfWeek`值與第一個案例值 1 不匹配,因此它會降到下一個案例,直到一個匹配。 由于`case 4`與`switch`表達式匹配,因此執行該案例中的語句`print("Wednesday")`并終止`switch case`。 如果沒有大小寫匹配,則執行`default`內部的語句。 * * * ### 示例 2:帶有穿透的`Switch`語句 如果在`case`語句中使用`fallthrough`關鍵字,則即使`case`值與`switch`表達式不匹配,控制也會繼續進行下一個`case`。 ```swift let dayOfWeek = 4 switch dayOfWeek { case 1 : print("Sunday") case 2: print("Monday") case 3: print("Tuesday") case 4: print("Wednesday") fallthrough case 5: print("Thursday") case 6: print("Friday") case 7: print("Saturday") default: print("Invalid day") } ``` 運行該程序時,輸出為: ```swift Wednesday Thursday ``` 在上述程序中,`case 4`執行語句`print("Wednesday")`,`fallthrough`關鍵字進入`case 5`。 即使大小寫與`switch`表達式不匹配,`case 5`中的語句`print("Thursday")`也會執行。 因此,您可以在控制臺中看到星期四的輸出。 * * * ### 示例 3:具有更復雜模式的`Switch`語句 ```swift let programmingLanguage = (name: "Go", version: 10) switch programmingLanguage { case (let name,let version) where (version < 0 && name.count < 0) : print("Invalid input") case ("Swift",let version) where version == 4: print("Found latest version of Swift") case ("Swift" , ..<4 ): print("Found older version of swift)") case ("Swift" ,4...) : print("Swift version greater than 4 is not released yet") case ("Taylor Swift",30) : print("OMG. This is Taylor swift") case (let name, let version): print(""" Programming Language:\(name) Version: \(version) Status: Not found """) } ``` 運行該程序時,輸出為: ```swift Programming Language:Go Version: 10 Status: Not found ``` 在上面的程序中,我們以不同的情況匹配元組類型的表達式`programmingLanguage`,如下所示: * `case (let name,let version) where (version < 0 && name.count < 0)` 這種情況下,將`switch`表達式值綁定到臨時常量或變量,以使用`let`關鍵字在案例的正文中使用。 這稱為值綁定。 您也可以使用`where`子句將條件應用于這些值。 對于多個條件,您可以使用`&&`運算符將它們連接起來,如上例所示。 如果條件不滿足`where`子句中定義的條件,則這些`case`塊內的語句將不執行,并且無法通過比較下一個`switch`的條件。 * `case ("Swift" , ..<4 )` 這種情況將元組第一個元素與字符串字面值`"Swift"`匹配,并且還檢查第二個元素是否在單邊范圍`..<4`內。 * `case ("Swift" ,4...)` 這種情況將元組第一個元素與字符串字面值`"Swift"`匹配,并且還檢查第二個元素是否在單邊范圍`4…`內。 * `case (let name, let version)` 這種情況將元組的每個值綁定到臨時常量或變量。
                  <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>

                              哎呀哎呀视频在线观看