ОК, теперь, когда Котлин официально вышел из игры, и я снова начал играть с ним, я совершенно смущен тем, что мне нужно выбирать между преимуществами sealed
и data
, но как-то не может быть и того, и другого.Kotlin: закрытый класс не может «содержать» классы данных? Зачем?
Это, например, кажется, имеет смысл для меня, но не компилируется:
sealed class Expr {
data class Const(val number: Double) : Expr()
data class Sum(val expr1 : Expr, val expr2 : Expr) : Expr()
}
потому что классы данных не могут распространяться на другие классы.
Есть что-то, что мне не хватает?
Начиная с Kotlin 1.1 теперь это возможно https://kotlinlang.org/docs/reference/whatsnew11.html?q=da&p=0#sealed-and-data-classes. – Stim