sealed数据类

Kotlin 1.1移除了一些在1.0中的sealed数据类的限制。现在你可以定义sealed数据类的子类,并且不是嵌套的。现在可以继承,使代码更简洁、美观。

sealed class Expr
data class Const(val number: Double) : Expr()
data class Sum(val e1: Expr, val e2: Expr) : Expr()
object NotANumber : Expr()
fun eval(expr: Expr): Double = when (expr) {
is Const -> expr.number
is Sum -> eval(expr.e1) + eval(expr.e2)
NotANumber -> Double.NaN
}
val e = eval(Sum(Const(1.0), Const(2.0)))

results matching ""

    No results matching ""