A switch with where clauses lets you check extra conditions for each case. It helps you make decisions based on more detailed rules.
Switch with where clauses in Swift
switch value { case pattern where condition: // code to run case anotherPattern where anotherCondition: // code to run default: // code to run if no cases match }
The where clause adds an extra test to a case.
If the where condition is false, the switch moves to the next case.
let number = 10 switch number { case let x where x > 5: print("Number is greater than 5") case let x where x <= 5: print("Number is 5 or less") }
let point = (x: 3, y: 4) switch point { case let (x, y) where x == y: print("x and y are equal") case let (x, y) where x > y: print("x is bigger") case let (x, y) where x < y: print("y is bigger") }
This program uses a switch with where clauses to print the age group.
let age = 20 switch age { case let a where a < 13: print("Child") case let a where a >= 13 && a < 20: print("Teenager") case let a where a >= 20: print("Adult") }
Use let in the case to capture the value for the where condition.
The where clause can use any condition that returns true or false.
Switch with where clauses lets you add extra checks to each case.
It keeps your code clear by combining pattern matching and conditions.
Use it when you want to test values with more detailed rules.
Practice
What does a where clause do in a Swift switch statement?
Solution
Step 1: Understand the role of where clause
Thewhereclause adds an extra condition to a case in aswitchstatement.Step 2: Compare with other options
Other options describe unrelated behaviors like default case or type changes, which are not whatwheredoes.Final Answer:
It adds an extra condition to a case to check before matching. -> Option BQuick Check:
where clause = extra condition [OK]
- Thinking where defines default case
- Confusing where with case repetition
- Assuming where changes variable types
Which of the following is the correct syntax for a switch case with a where clause in Swift?
let number = 10
switch number {
case let x where x > 5:
print("Greater than 5")
default:
print("5 or less")
}Solution
Step 1: Identify correct pattern binding syntax
In Swift, to bind a value in a case, uselet xbefore thewhereclause.Step 2: Check the where clause usage
Thewhereclause follows the pattern binding, socase let x where x > 5:is correct.Final Answer:
case let x where x > 5: -> Option CQuick Check:
Pattern binding with let + where clause = case let x where x > 5: [OK]
- Omitting 'let' before variable
- Using 'if' instead of 'where'
- Placing 'where' before 'let'
What will be printed by this Swift code?
let age = 20
switch age {
case let x where x < 13:
print("Child")
case let x where x >= 13 && x < 20:
print("Teenager")
case let x where x >= 20:
print("Adult")
default:
print("Unknown")
}Solution
Step 1: Check the value of age
The variableageis 20.Step 2: Evaluate each case condition
First case: x < 13? No (20 < 13 is false). Second case: 13 <= x < 20? No (20 < 20 is false). Third case: x >= 20? Yes (20 >= 20 is true).Final Answer:
Adult -> Option AQuick Check:
age 20 matches 'Adult' case [OK]
- Choosing 'Teenager' because 20 is close to 19
- Ignoring >= and < operators
- Forgetting switch stops at first match
Identify the error in this Swift switch statement using where clauses:
let score = 85
switch score {
case let x where x > 90:
print("Excellent")
case let x where x >= 80:
print("Good")
case let x where x >= 70:
print("Average")
case _:
print("Poor")
}Solution
Step 1: Analyze case conditions and order
The cases check if score > 90, then >= 80, then >= 70. Since 85 >= 80 and also >= 70, the second case matches first.Step 2: Understand overlapping conditions effect
Because cases overlap, order matters. If order was different, output might change. This can cause confusion or wrong matching.Final Answer:
The cases overlap and order causes wrong matching. -> Option DQuick Check:
Overlapping where clauses need careful order [OK]
- Ignoring overlapping conditions
- Assuming default case is mandatory
- Thinking let binding disallowed with where
You want to categorize a number as "Small", "Medium", or "Large" using a switch with where clauses. The rules are:
- Small: less than 10
- Medium: between 10 and 100 inclusive
- Large: greater than 100
Which switch statement correctly implements this?
let value = 50
switch value {
case let x where x < 10:
print("Small")
case let x where x >= 10 && x <= 100:
print("Medium")
case let x where x > 100:
print("Large")
default:
print("Unknown")
}Solution
Step 1: Check each case condition against rules
First case: x < 10 matches "Small". Second case: x >= 10 and x <= 100 matches "Medium". Third case: x > 100 matches "Large".Step 2: Verify coverage and syntax
All values fit one of these cases. Syntax is correct withlet x whereclauses. Default is fallback but not needed here.Final Answer:
Correctly categorizes all values as per rules. -> Option AQuick Check:
Conditions cover all ranges correctly [OK]
- Overlapping ranges causing wrong matches
- Missing <= or >= in conditions
- Forgetting to bind variable with let
Ready to prove it?
Pass the test and this pattern moves unknown
