Bird
Raised Fist0
Kotlinprogramming~5 mins

When expression as powerful switch in Kotlin - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a when expression in Kotlin?
A when expression in Kotlin is a powerful alternative to the traditional switch statement. It allows you to check a value against multiple conditions and execute code based on the first matching condition.
Click to reveal answer
intermediate
How does when differ from a traditional switch?
Unlike switch, when can handle any type, not just primitives or enums. It can also check complex conditions, ranges, and even arbitrary expressions.
Click to reveal answer
beginner
Can when be used as an expression that returns a value?
Yes! when is an expression, so it returns a value. You can assign the result of a when expression directly to a variable.
Click to reveal answer
intermediate
What happens if no when branch matches and there is no else branch?
If no branch matches and there is no else branch, the code will not compile. Kotlin requires when expressions to be exhaustive or have an else branch.
Click to reveal answer
beginner
Show a simple example of when used as a switch for integers.
Example:
val x = 3
val result = when (x) {
  1 -> "One"
  2 -> "Two"
  3 -> "Three"
  else -> "Unknown"
}
Click to reveal answer
What keyword is used in Kotlin as a powerful alternative to switch?
Awhen
Bif
Ccase
Dselect
Can when in Kotlin check for ranges like 1..5?
AOnly with enums
BNo, only exact matches
COnly for strings
DYes, it supports ranges
What must you include in a when expression to handle unmatched cases?
Adefault
Belse
Ccatch
Dfinally
Is when in Kotlin a statement or an expression?
ABoth statement and expression
BOnly an expression
COnly a statement
DNeither
Which of these can when NOT match against?
AExact values
BArbitrary conditions
CFunction definitions
DRanges
Explain how the when expression in Kotlin works and why it is more powerful than a traditional switch.
Think about what makes <code>when</code> flexible and expressive.
You got /5 concepts.
    Write a Kotlin when expression that returns a string describing if a number is positive, negative, or zero.
    Use simple comparisons inside <code>when</code> branches.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of the when expression in Kotlin?
      easy
      A. To define functions with multiple parameters
      B. To create loops that repeat actions multiple times
      C. To select actions based on different values, like a switch statement
      D. To declare variables with different types

      Solution

      1. Step 1: Understand the role of when

        The when expression is used to choose between different actions depending on the value it checks.
      2. Step 2: Compare with other options

        The other options describe loops, functions, and variables, which are unrelated to when.
      3. Final Answer:

        To select actions based on different values, like a switch statement -> Option C
      4. Quick Check:

        when chooses actions by value [OK]
      Hint: Think of when as a smarter switch [OK]
      Common Mistakes:
      • Confusing when with loops
      • Thinking when declares variables
      • Mixing when with function definitions
      2. Which of the following is the correct syntax for a simple when expression in Kotlin?
      easy
      A. when x { 1: println("One") 2: println("Two") else: println("Other") }
      B. switch (x) { case 1: println("One") case 2: println("Two") default: println("Other") }
      C. if (x == 1) println("One") else if (x == 2) println("Two") else println("Other")
      D. when (x) { 1 -> println("One") 2 -> println("Two") else -> println("Other") }

      Solution

      1. Step 1: Identify Kotlin when syntax

        The correct syntax uses when (x) { value -> action } with arrows and braces.
      2. Step 2: Check other options

        when x { 1: println("One") 2: println("Two") else: println("Other") } uses colons (:) instead of arrows (->) and lacks parentheses. switch (x) { case 1: ... } is Java or JavaScript syntax. if (x == 1) ... is an if-else chain.
      3. Final Answer:

        when (x) { 1 -> println("One") 2 -> println("Two") else -> println("Other") } -> Option D
      4. Quick Check:

        Kotlin when uses arrows and braces [OK]
      Hint: Look for arrows (->) inside braces for when [OK]
      Common Mistakes:
      • Using colon (:) instead of arrow (->)
      • Confusing when with switch syntax
      • Omitting parentheses around the variable
      3. What will be the output of the following Kotlin code?
      val x = 3
      when (x) {
        1, 2 -> println("Small")
        in 3..5 -> println("Medium")
        else -> println("Large")
      }
      medium
      A. Medium
      B. Small
      C. Large
      D. No output (runtime error)

      Solution

      1. Step 1: Check the value of x

        The variable x is 3.
      2. Step 2: Match x with when cases

        3 is not in 1 or 2, but it is in the range 3..5, so "Medium" is printed.
      3. Final Answer:

        Medium -> Option A
      4. Quick Check:

        3 in 3..5 means output is "Medium" [OK]
      Hint: Check ranges and multiple values carefully [OK]
      Common Mistakes:
      • Ignoring ranges and picking wrong case
      • Assuming 3 matches 1 or 2
      • Thinking else runs when a range matches
      4. Identify the error in this Kotlin when expression:
      val y = 10
      when y {
        5 -> println("Five")
        10 -> println("Ten")
        else -> println("Other")
      }
      medium
      A. Missing parentheses around y in when
      B. Missing arrow (->) after else
      C. Using when without braces
      D. No error, code is correct

      Solution

      1. Step 1: Check when syntax

        The when expression requires parentheses around the variable: when (y).
      2. Step 2: Check other syntax parts

        Braces are present. Arrows (->) are correctly used after all cases including else. The syntax error is missing parentheses around y.
      3. Final Answer:

        Missing parentheses around y in when -> Option A
      4. Quick Check:

        when needs parentheses around the subject [OK]
      Hint: Always put parentheses around the variable in when [OK]
      Common Mistakes:
      • Omitting parentheses around the variable
      • Forgetting arrows after cases
      • Using when without braces
      5. You want to use a when expression to categorize ages into groups: "Child" for 0-12, "Teen" for 13-19, "Adult" for 20-64, and "Senior" for 65 and above. Which when expression correctly implements this?
      hard
      A. when (age) { in 0..12 -> "Child" in 13..19 -> "Teen" in 20..64 -> "Adult" else -> "Senior" }
      B. when { age >= 0 && age <= 12 -> "Child" age >= 13 && age <= 19 -> "Teen" age >= 20 && age <= 64 -> "Adult" age >= 65 -> "Senior" else -> "Unknown" }
      C. when (age) { 0..12 -> "Child" 13..19 -> "Teen" 20..64 -> "Adult" 65 -> "Senior" }
      D. when (age) { in 0..12 -> "Child" in 13..19 -> "Teen" in 20..64 -> "Adult" in 65..100 -> "Senior" else -> "Unknown" }

      Solution

      1. Step 1: Understand when with condition checks

        when { age >= 0 && age <= 12 -> "Child" age >= 13 && age <= 19 -> "Teen" age >= 20 && age <= 64 -> "Adult" age >= 65 -> "Senior" else -> "Unknown" } uses when without argument and checks conditions with boolean expressions, which is valid and flexible.
      2. Step 2: Check other options for correctness

        when (age) { in 0..12 -> "Child" in 13..19 -> "Teen" in 20..64 -> "Adult" else -> "Senior" } is valid but misses handling negative ages explicitly; when (age) { 0..12 -> "Child" 13..19 -> "Teen" 20..64 -> "Adult" 65 -> "Senior" } uses invalid syntax for ranges; when (age) { in 0..12 -> "Child" in 13..19 -> "Teen" in 20..64 -> "Adult" in 65..100 -> "Senior" else -> "Unknown" } limits "Senior" to 65-100 and has an else for unknown ages.
      3. Step 3: Choose the best option

        when { age >= 0 && age <= 12 -> "Child" age >= 13 && age <= 19 -> "Teen" age >= 20 && age <= 64 -> "Adult" age >= 65 -> "Senior" else -> "Unknown" } covers all age ranges clearly with conditions and includes an else for unknown ages.
      4. Final Answer:

        when { age >= 0 && age <= 12 -> "Child" age >= 13 && age <= 19 -> "Teen" age >= 20 && age <= 64 -> "Adult" age >= 65 -> "Senior" else -> "Unknown" } -> Option B
      5. Quick Check:

        Use condition checks inside when for flexible ranges [OK]
      Hint: Use condition checks inside when for complex ranges [OK]
      Common Mistakes:
      • Using invalid range syntax without 'in'
      • Not handling unexpected values with else
      • Limiting ranges incorrectly or missing conditions
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard