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