Swift - switch 语句



switch 语句是最强大的控制语句,它允许我们以易于阅读的方式表示多分支逻辑。它提供了一种方法来根据多个给定的 case 评估值,并执行第一个匹配 case 中的语句块。

switch 语句是 if-else 语句的替代方案,因为它比 if-else 语句更有效地处理多个条件。

语法

以下是 switch 语句的语法:

switch expression{
case 1: 
// Statement 
fallthrough // Optional
case 2: 
// Statement 
break // Optional
default: 
// Statement 

示例

以下是 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 switch 语句中的 break 语句

break 语句用于在执行匹配的 case 语句块后立即终止 switch 块,并将控制转移到 switch 块之后出现的语句。break 语句用于 case 块中。

语法

以下是 break 语句的语法:

switch expression{
   case x:
   // Statement 
   break
   default:
   // Statement
}

示例

以下是 break 语句的示例:

import Foundation

let day = 4
switch day {
   // Case with the break statements
   case 1:
      print("Monday")
      break
   case 2:
      print("Tuesday")
      break
   case 3:
      print("Wednesday")
      break
   case 4:
      print("Thursday")
      break
   case 5:
      print("Friday")
      break
   default:
      print("Weekend")
}

输出

它将产生以下输出:

Thursday

Swift switch 语句中的 fallthrough

switch 语句一旦遇到第一个匹配的 case 就会结束执行,即使我们使用或不使用 break 语句也是如此。与 C 和 C++ 编程不同,控制不会贯穿后续 case 的底部。

如果我们想在 Swift 中实现 fallthrough 功能,则必须在每个 case 中显式使用 fallthrough 语句。fallthrough 语句允许控制传递到下一个 case,即使该 case 的条件不匹配。

语法

以下是 fallthrough 语句的语法:

switch expression{
   case x:
   // Statement 
   fallthrough
   default:
   // Statement
}

示例

以下是 fallthrough 语句的示例:

import Foundation

let number = 2

switch number {

   // Case statement with fall through
   case 1:
      print("Hello i am case 1")
      fallthrough
   case 2:
      print("Hello i am case  2")
      fallthrough
   case 3:
      print("Hello i am case  3")
   default:
      print("Not found")
}

输出

它将产生以下输出:

Hello i am case  2
Hello i am case  3

Swift switch 语句中的范围

在 Swift 中,我们允许在 case 语句中使用范围来根据一系列元素匹配值。当我们想要处理值落在给定范围内的 case 时,通常会使用它。

语法

以下是 case 语句中范围的语法:

switch expression{
   case x…y:
   // Statement 
   default:
   // Statement
}

示例

以下是 case 语句中范围的示例:

import Foundation

let temp = 27

switch temp {

// Case statement with ranges
case ..<0:
   print("Freezing.")
case 0...20:
   print("Cold.")
case 21...30:
   print("Moderate.")
case 31...:
   print("Hot")
default:
   print("Please enter valid temperature")
}

输出

它将产生以下输出:

Moderate.

Swift switch 语句中的元组匹配

众所周知,元组用于将多个值存储在一起,无论它们是否为同一类型。因此,我们允许在 switch 语句中使用元组作为变量表达式,也可以使用元组在 case 语句中测试多个值。我们也可以在元组中使用通配符模式“_”。

语法

以下是元组匹配的语法:

switch (x1, x2){
   case (y, x1):
   // Statement 
   default:
   // Statement
}

示例

以下是元组匹配的示例:

import Foundation	
// Switch expression in tuple
let number = (num1: 25, num2: 10, num3: 11)

switch number {
   // Case expression in tuple
   case (25, 10, 0):
      print("Numbers are (25, 10, 0)")
   case (13, _, 11):
      print("Numbers are (13, 11)")
   case (25, 10, 11):
      print("Number are (25, 10, 11)")
   default:
      print("Number is not found")
}

输出

它将产生以下输出:

Number are (25, 10, 11)

Swift switch 语句中的值绑定

Swift 提供了一个名为值绑定的新属性。使用此属性,我们允许在 case 语句中初始化一个临时变量,并且此变量仅在其定义的 case 的主体中可用。或者我们可以说它将匹配值绑定到相关块中的临时变量或常量。

语法

以下是值绑定的语法:

switch expression{
   case (let x, let y):
   // Statement 
   default:
   // Statement
}

示例

以下是值绑定的示例:

import Foundation

let num = 17
switch num {
   // Value binding
   case let y where y % 2 == 0:
      print("\(num) is an even number.")
   case let z where z % 2 != 0:
      print("\(num) is an odd number.")
   default:
      print("\(num) is invalid number.")
}

输出

它将产生以下输出:

17 is an odd number.

Swift 带 where 子句的 switch 语句

我们还可以将 where 子句与 case 条件一起使用以检查额外条件。当我们想根据附加条件筛选 case 时,可以使用它。

语法

以下是带有 where 子句的 case 的语法:

switch expression{
   case "0"…"8" where expression.isNumber: 
   // Statement 
   default:
   // Statement
}

示例

以下是带有 where 子句的 case 的示例:

import Foundation
let marks = 77
switch marks {
case 0...59:
    print("Sorry! You are Failed")
    
   // Case with where clause
   case 60...79 where marks < 75:
      print("Congratulations! You are Passed")
   case 60...79 where marks >= 75:
      print("Congratulations! You are Passed with distinction")
   case 80...100:
      print("Excellent! You topped the Class")
   default:
      print("Not a valid score")
}

输出

它将产生以下输出:

Congratulations! You are Passed with distinction

Swift 中的复合 case

在 switch 语句中,我们允许在一个 case 中使用多个模式,其中 case 中的所有模式都用逗号分隔,并共享相同的代码块。

如果任何给定的模式匹配,则将执行该 case 中的代码块。当我们想要为各种 case 执行相同的代码块时,通常会使用复合 case。

语法

以下是复合 case 的语法:

switch expression{
   case a, b, c: 
   // Statement 
   case x, y, z, w:
   // Statement
   default:
   // Statement
}

示例

以下是复合 case 的示例:

import Foundation

let number = 20

switch number {
   // Compound case
   case 10, 20, 30:
      print("Selected number is 10, 20 or 30")
   case 40, 50, 60:
      print("Selected number is 40, 50, 60")
   default:
      print("Value not found")
}

输出

它将产生以下输出:

Selected number is 10, 20 or 30
广告