Python Logo

Kotlin When


Kotlin When Expression: A Versatile Alternative to If...Else

The when expression in Kotlin provides a concise and expressive way to handle multiple conditions and corresponding actions, offering a more structured alternative to nested if...else statements. It is particularly useful when dealing with a series of discrete cases and their associated outcomes.

Structure of the When Expression

The general syntax of the when expression in Kotlin is as follows:

when (expression) {

  case1 -> action1

  case2 -> action2

  ...

  else -> defaultAction

}

 

Where:

  • expression is the value or variable being evaluated against the cases.
  • caseN represents a specific condition or set of conditions to be checked.
  • actionN is the code to be executed if the corresponding caseN condition is true.
  • else represents the default case, which is executed if none of the specified conditions match.

Examples of When Expression Usage

Consider a simple example of determining a grade based on a student's score:

val score = 85

 

when (score) {

  in

 90..100 -> println("Grade: A")

  in

 80..89 -> println("Grade: B")

  in

 70..79 -> println("Grade: C")

  in

 60..69 -> println("Grade: D")

  else -> println("Grade: F")

}

 

In this example, the when expression evaluates the score variable against the defined ranges. If the score falls within a specific range, the corresponding println() statement is executed, assigning the appropriate grade. The else block serves as the default case, handling any scores outside the specified ranges.

Advanced Usage of When Expression

The when expression can also handle more complex conditions using Boolean expressions and multiple parameters. For instance, consider checking a user's age and their subscription status:

val age = 16

val hasSubscription = true

 

when (age) {

  in 18..25 -> if (hasSubscription) {

    println("Enjoy our premium content!")

  } else {

    println("Subscribe to unlock premium features.")

  }

  else -> println("You are not eligible for premium content yet.")

}

 

This example utilizes nested when and if...else blocks to handle more granular conditions. The inner if...else block checks the subscription status within the age range of 18 to 25.

Conclusion

The when expression is a powerful and versatile tool for handling multiple conditions and corresponding actions in Kotlin code. It provides a concise, expressive, and readable alternative to nested if...else statements, making your code more structured and maintainable. By effectively utilizing the when expression, you can enhance the decision-making logic and clarity of your Kotlin programs.