Swift switch Statement



Swift switch statement is used to compare a value against multiple possible cases and execute code based on the first matching pattern.

Swift switch Statement

The switch statement is an alternative to the if-else-if ladder and provides a cleaner and more readable way to handle multiple conditional branches. The switch statement allows you to evaluate a value against several possible cases and execute the code block associated with the first matching case.

The switch statement is useful when you want to check a single value against multiple possible values and execute the associated block of code for the first match.

Writing a switch Statement

To write a switch statement, use the switch keyword followed by a value to evaluate, and define multiple case blocks to handle different possible matches. Also, you can write a default case block which is optional.

Following is the syntax of the switch statement −

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

Example of switch Statement

The following is the example of the switch statement −

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")
}

Output

It will produce the following output −

Value of index is either 10 or 15

Using break with switch Statement

The break statement is used to terminate the switch block immediately after executing the matched case statement block and the controls transfer to the statement present just after the switch block. Break statements are used in case blocks.

Syntax

Following is the syntax for the break statement −

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

Example

The following is the example for the break statement −

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")
}

It will produce the following output −

Thursday

Understanding Fallthrough in Switch Statement

A switch statement ends its execution as soon as it encounters its first matching case, even if we use a break statement or not. Control does not fallthrough the bottom of subsequent cases like in C and C++ programming.

If we want to achieve the fallthrough feature in Swift, then we have to explicitly use the fallthrough statement in each case. The fallthrough statement allows controls to pass down to the next case even if the condition for that case is not matched.

Syntax

Following is the syntax for the fallthrough statement −

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

Example

The following is the example for the fallthrough statement −

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")
}

It will produce the following output −

Hello i am case  2
Hello i am case  3

Using Ranges

In Swift, we are allowed to use ranges in the case statements to match a value against a range of elements. It is commonly used when we want to handle cases where the value falls in the given range.

Syntax

Following is the syntax for ranges in case statement −

switch expression{
   case xy:
   // Statement 
   default:
   // Statement
}

Example

The following is the example for ranges in case statement −

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")
}

It will produce the following output −

Moderate.

Tuple Matching in switch Statement

As we know a tuple is used to store multiple values together, whether they are of the same type or not. So we are allowed to use tuple as a variable expression in the switch statement and can also use tuple to test multiple values in the case statement. We can also use the wildcard pattern "_" in the tuple.

Syntax

Following is the syntax for tuple matching −

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

Example

The following is the example for tuple matching −

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")
}

It will produce the following output −

Number are (25, 10, 11)

Value Binding

Swift provides a new property named value binding. Using this property, we are allowed to initialize a temporary variable in the case statement and this variable is accessible only in the body of the case in which it is defined. Or we can say that it binds the match value to a temporary variable or constant inside the related block.

Syntax

Following is the syntax for value binding −

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

Example

The following is the example for value binding −

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.")
}

It will produce the following output −

17 is an odd number.

Using where Clause in switch Statement

We can also use the where clause with case conditions to check for extra conditions. It is used when we want to filter the case according to the additional condition.

Syntax

Following is the syntax for the case with where clause −

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

Example

The following is the example for the case with where clause −

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")
}

It will produce the following output −

Congratulations! You are Passed with distinction

Compound switch Cases

In the switch statement, we are allowed to use multiple patterns in a single case, where all the patterns present in a case are separated by commas and share the same block of code.

If any of the given pattern matches, then the block of code present in that case will execute. Compound cases are commonly used when we want to execute the same block of code for various cases.

Syntax

Following is the syntax for compound case −

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

Example

The following is the example for compound 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")
}

It will produce the following output −

Selected number is 10, 20 or 30
Advertisements