Data Classes and Sealed Types
Sealed When
Use when to handle each sealed subclass.
Sealed When
SealedWhen.kt
sealed class Level
class LowLevel : Level()
class HighLevel : Level()
fun describe(level: Level): String {
return when (level) {
is LowLevel -> "low"
is HighLevel -> "high"
}
}
fun main() {
val score =
val level: Level
if (score >= 8) {
level = HighLevel()
} else {
level = LowLevel()
}
val label = describe(level)
println("score=$score")
println("label=$label")
}
sealed class Level
class LowLevel : Level()
class HighLevel : Level()
fun describe(level: Level): String {
return when (level) {
is LowLevel -> "low"
is HighLevel -> "high"
}
}
fun main() {
val score =
val level: Level
if (score >= 8) {
level = HighLevel()
} else {
level = LowLevel()
}
val label = describe(level)
println("score=$score")
println("label=$label")
}
sealed class Level
class LowLevel : Level()
class HighLevel : Level()
fun describe(level: Level): String {
return when (level) {
is LowLevel -> "low"
is HighLevel -> "high"
}
}
fun main() {
val score =
val level: Level
if (score >= 8) {
level = HighLevel()
} else {
level = LowLevel()
}
val label = describe(level)
println("score=$score")
println("label=$label")
}
sealed-when
`when` pairs naturally with sealed classes because every subclass can be listed.