ОК, теперь, когда Котлин официально вышел из игры, и я снова начинаю играть с ним, я совершенно смущен тем, что мне нужно выбирать между преимуществами sealed
и data
, но каким-то образом не может иметь обоих.
Это, например, кажется мне полезным, но не компилируется:
sealed class Expr {
data class Const(val number: Double) : Expr()
data class Sum(val expr1 : Expr, val expr2 : Expr) : Expr()
}
потому что классы данных не могут распространять другие классы.
Есть ли что-то, что мне не хватает?