Swift - 穿透語句



Swift 中的 switch 語句在第一個匹配的 case 完成執行後就立即結束,而不是像 C 和 C++ 程式語言那樣貫穿到後續 case 的底部。

C 和 C++ 中 switch 語句的通用語法如下所示:

switch(expression){
   case constant-expression  :
      statement(s);
      break; /* optional */
   case constant-expression  :
      statement(s);
      break; /* optional */
  
   /* you can have any number of case statements */
   default : /* Optional */
      statement(s);
}

這裡我們需要使用 break 語句退出 case 語句,否則執行控制將貫穿到匹配的 case 語句下方可用的後續 case 語句。

因此,在 Swift 中,我們可以使用 fallthrough 語句實現相同的功能。此語句允許控制轉移到下一個 case 語句,而不管當前 case 的條件是否匹配。由於此原因,開發人員不太喜歡它,因為它使程式碼可讀性降低或可能導致意外行為。

語法

以下是 fallthrough 語句的語法:

switch expression {
   case expression1  :
      statement(s)
      fallthrough /* optional */
   case expression2, expression3  :
      statement(s)
      fallthrough /* optional */
  
   default : /* Optional */
      statement(s);
}

如果我們不使用 fallthrough 語句,則程式將在執行匹配的 case 語句後退出 switch 語句。我們將透過以下兩個示例來說明其功能。

示例

Swift 程式演示瞭如何使用不帶 fallthrough 的 switch 語句。

import Foundation

var index = 10
switch index {
   case 100  :
      print( "Value of index is 100")
   case 10,15  :
      print( "Value of index is either 10 or 15")
   case 5  :
      print( "Value of index is 5")
   default :
      print( "default case")
}

輸出

它將產生以下輸出:

Value of index is either 10 or 15

示例

Swift 程式演示瞭如何使用帶 fallthrough 的 switch 語句。

import Foundation

var index = 10
switch index {
   case 100  :
      print( "Value of index is 100")
      fallthrough
   case 10,15  :
      print( "Value of index is either 10 or 15")
      fallthrough
   case 5  :
      print( "Value of index is 5")
   default :
      print( "default case")
}

輸出

它將產生以下輸出:

Value of index is either 10 or 15
Value of index is 5
廣告