首页 > 解决方案 > Android开发中密封类的实例

问题描述

我是 Kotlin 的新手。我正在学习sealed classes,但我不明白如何在 Android 开发中使用它。能给我举个例子?

标签: kotlinsealed-class

解决方案


当您想要定义一个封闭的子类列表时,它很有用。

您可以使用数据类扩展密封类的可能性。例子:

 fun eval(expr: Expr): Double = when(expr) {
   is Const -> expr.number
   is Sum -> eval(expr.e1) + eval(expr.e2)
   NotANumber -> Double.NaN
  // the `else` clause is not required because we've covered all the cases
 }

宣言:

sealed class Expr
data class Const(val number: Double) : Expr()
data class Sum(val e1: Expr, val e2: Expr) : Expr()
object NotANumber : Expr()

推荐阅读