密封类和数据类

数据类可以继承其他类,包括封装类,这将是类层级更有用。

在新的支持特性下,你可以按照如下方式重写Expr类的层级:

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
}

results matching ""

    No results matching ""