Skip to content
DeveloperMemos

Using Default Cases in Swift Switch Statements

Swift, Switch Statements1 min read

Switch statements are commonly used in Swift to match a value against a set of possible patterns. While switch statements can be very powerful, they can also become cumbersome if not used correctly. One way to alleviate some of this complexity is by using the default case in switch statements.

The default case is essentially a catch-all case that matches any value that doesn't match any of the other cases. This can be useful in situations where you want to provide a default behavior for unmatched cases rather than having the program simply exit or throw an error.

Here's an example of a simple switch statement that uses a default case:

1let number = 5
2
3switch number {
4case 1:
5 print("One")
6case 2:
7 print("Two")
8default:
9 print("Not One or Two")
10}

In this example, the switch statement checks the value of the number variable against the cases 1 and 2. In the event that number is neither 1 nor 2, the default case is triggered, and the message "Not One or Two" is printed to the console.

Using the default case can make your code more robust and easier to read, especially when you're dealing with large or complex switch statements. For instance, consider the following example:

1enum Direction {
2 case north
3 case south
4 case east
5 case west
6}
7
8func printDirection(_ direction: Direction) {
9 switch direction {
10 case .north:
11 print("Heading North")
12 case .south:
13 print("Heading South")
14 case .east:
15 print("Heading East")
16 case .west:
17 print("Heading West")
18 default:
19 fatalError("Invalid direction")
20 }
21}

In this example, the printDirection function takes a Direction value and uses a switch statement to print a message indicating the corresponding heading. If an invalid direction is passed to the function, the default case is triggered and the program exits with an error. While this behavior is technically correct, it's not very user-friendly. Instead, we can replace the fatalError() call with a more descriptive error message:

1default:
2 print("Invalid direction: \(direction)")

Now, when an invalid direction is passed to the function, we get a useful error message that tells us what went wrong and why.

In Summary

Using the default case in Swift switch statements can make your code more robust and easier to read. By providing a default behavior for unmatched cases, you can prevent errors and provide better feedback to users when things go wrong.