Bird
Raised Fist0
Kotlinprogramming~10 mins

When without argument in Kotlin - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - When without argument
Start
↓
Evaluate conditions one by one
↓
If condition true?
No→Check next condition
Yes↓
Execute corresponding block
↓
Exit when block executed
↓
End
The 'when' without argument checks each condition in order and runs the block for the first true condition, then stops.
Execution Sample
Kotlin
val x = 15
when {
  x < 10 -> println("Less than 10")
  x in 10..20 -> println("Between 10 and 20")
  else -> println("More than 20")
}
This code checks x against conditions without an argument and prints the matching message.
Execution Table
StepCondition CheckedCondition ResultAction TakenOutput
1x < 10falseCheck next condition
2x in 10..20trueExecute blockBetween 10 and 20
3ExitN/AStop checking further
💡 Condition 'x in 10..20' is true, so execution stops after this block.
Variable Tracker
VariableStartAfter Step 1After Step 2Final
x15151515
Key Moments - 2 Insights
Why does the 'when' stop after the second condition even though there is an 'else'?
Because the second condition 'x in 10..20' is true, the corresponding block runs and 'when' exits immediately without checking 'else' (see execution_table row 2 and 3).
What happens if none of the conditions are true and there is no 'else'?
The 'when' expression does nothing and no block runs, because it only executes the first true condition block (not shown in this example but implied by the flow).
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the result of checking 'x < 10' at step 1?
Atrue
Bfalse
Cerror
Dnot evaluated
💡 Hint
Check the 'Condition Result' column at step 1 in the execution_table.
At which step does the 'when' expression stop checking conditions?
AStep 1
BStep 3
CStep 2
DIt never stops
💡 Hint
Look at the 'Action Taken' and 'Exit' rows in the execution_table.
If x was 25, which output would appear according to the execution flow?
AMore than 20
BBetween 10 and 20
CLess than 10
DNo output
💡 Hint
Think about which condition would be true if x=25, based on the conditions in the code sample.
Concept Snapshot
when without argument:
- Checks each condition in order
- Executes block for first true condition
- Stops after executing one block
- 'else' acts as default if no conditions true
- Useful for complex condition checks without a single value
Full Transcript
The Kotlin 'when' expression without an argument works by checking each condition one by one. It runs the block for the first condition that is true and then stops checking further. For example, if x is 15, it first checks if x < 10, which is false, then checks if x is between 10 and 20, which is true, so it prints 'Between 10 and 20' and stops. If none of the conditions are true and there is an 'else' block, it runs that as a default. This makes 'when' without argument a flexible way to handle multiple conditions clearly and simply.

Practice

(1/5)
1. What does when without argument do in Kotlin?
easy
A. It matches a value against constants only.
B. It checks boolean conditions one by one until one is true.
C. It creates a loop that runs multiple times.
D. It declares a variable with multiple types.

Solution

  1. Step 1: Understand when without argument

    When used without an argument, when evaluates each condition as a boolean expression.
  2. Step 2: Compare with other uses

    Unlike when with argument, it does not match values but checks conditions one by one.
  3. Final Answer:

    It checks boolean conditions one by one until one is true. -> Option B
  4. Quick Check:

    when without argument = boolean checks [OK]
Hint: Remember: no argument means boolean conditions checked [OK]
Common Mistakes:
  • Thinking it matches values like switch-case
  • Confusing it with loops
  • Assuming it declares variables
2. Which of the following is the correct syntax for when without argument in Kotlin?
easy
A. when { condition1 -> action1 condition2 -> action2 else -> defaultAction }
B. when(value) { 1 -> action1 2 -> action2 else -> defaultAction }
C. when (condition) { true -> action1 false -> action2 }
D. when (value) { condition1 -> action1 condition2 -> action2 }

Solution

  1. Step 1: Identify when without argument syntax

    The correct syntax omits the argument and uses boolean conditions directly inside curly braces.
  2. Step 2: Check options

    when { condition1 -> action1 condition2 -> action2 else -> defaultAction } matches this pattern with conditions and an else branch; others use an argument or incorrect structure.
  3. Final Answer:

    when { condition1 -> action1 condition2 -> action2 else -> defaultAction } -> Option A
  4. Quick Check:

    Correct syntax = when { condition1 -> action1 condition2 -> action2 else -> defaultAction } [OK]
Hint: No argument means conditions directly inside braces [OK]
Common Mistakes:
  • Adding argument inside parentheses
  • Missing else branch
  • Using values instead of conditions
3. What is the output of this Kotlin code?
val x = 10
when {
  x < 5 -> println("Less than 5")
  x in 5..10 -> println("Between 5 and 10")
  else -> println("More than 10")
}
medium
A. More than 10
B. Less than 5
C. Between 5 and 10
D. No output

Solution

  1. Step 1: Evaluate conditions in order

    First condition: x < 5 is false (10 < 5 is false). Second condition: x in 5..10 is true (10 is in 5 to 10).
  2. Step 2: Execute matching branch

    Since second condition is true, it prints "Between 5 and 10" and stops checking further.
  3. Final Answer:

    Between 5 and 10 -> Option C
  4. Quick Check:

    10 in 5..10 = true [OK]
Hint: Check conditions top to bottom, first true runs [OK]
Common Mistakes:
  • Assuming x < 5 is true
  • Ignoring range check
  • Expecting else branch output
4. Find the error in this Kotlin code using when without argument:
val y = 3
val result = when {
  y > 5 -> println("Greater than 5")
  y < 5 -> println("Less than 5")
}
medium
A. Missing else branch for unmatched cases
B. Incorrect use of parentheses after when
C. Conditions must be constants, not expressions
D. Cannot use println inside when

Solution

  1. Step 1: Check when branches

    The code has two conditions but no else branch to handle all other cases.
  2. Step 2: Understand Kotlin requirement

    When used without argument, Kotlin requires an else branch to cover all possibilities or the compiler errors about non-exhaustive when.
  3. Final Answer:

    Missing else branch for unmatched cases -> Option A
  4. Quick Check:

    Always add else branch [OK]
Hint: Always include else branch in when without argument [OK]
Common Mistakes:
  • Ignoring else branch requirement
  • Adding parentheses after when
  • Thinking conditions must be constants
5. You want to print a message based on temperature:
val temp = 25
when {
  temp <= 0 -> println("Freezing")
  temp in 1..15 -> println("Cold")
  temp in 16..25 -> println("Warm")
  temp > 25 -> println("Hot")
  else -> println("Unknown")
}

What will be printed and why is this when usage correct?
hard
A. Compilation error due to overlapping ranges
B. "Cold"; because 25 is in 1..15 range
C. "Hot"; because 25 is greater than 25
D. "Warm"; because conditions cover all ranges with else as fallback

Solution

  1. Step 1: Check which condition matches temp = 25

    temp <= 0 is false; temp in 1..15 is false; temp in 16..25 is true (25 is included).
  2. Step 2: Confirm correctness of when usage

    All possible values are covered by conditions and else branch ensures fallback; no overlap causes error.
  3. Final Answer:

    "Warm"; because conditions cover all ranges with else as fallback -> Option D
  4. Quick Check:

    25 in 16..25 = true, else covers all [OK]
Hint: Check ranges carefully; else handles unexpected values [OK]
Common Mistakes:
  • Misreading range boundaries
  • Assuming 25 > 25 is true
  • Thinking else is optional
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