下面的代码在不可能通过条件 Color.Dark 和 Color.Light 时编译,因为这两个类是抽象的。
我错过了什么 ?
sealed class Color () {
sealed class Dark () {
class DarkRed : Color()
class DarkBlue : Color()
}
sealed class Light {
class LightRed : Color()
class LightBlue : Color()
}
}
fun eval(c: Color) =
when (c) {
is Color.Dark -> println("Dark")
is Color.Dark.DarkRed -> println("Dark Red")
is Color.Dark.DarkBlue -> println("Dark Blue")
is Color.Light -> println("Light")
is Color.Light.LightRed -> println("Light Red")
is Color.Light.LightBlue -> println("Light Blue")
}
fun main(args: Array<String>) {
val dr = Color.Dark.DarkRed()
eval(dr)
}