Mohsen Shahini
03/10/2021, 9:49 AMsealed *class* Expr
data *class* Const(*val* number: *Double*) : Expr()
data *class* Sum(*val* e1: Expr, *val* e2: Expr) : Expr()
2. second approach:
sealed *class* Expr {
data *class* Const(*val* number: *Double*) : Expr()
data *class* Sum(*val* e1: Expr, *val* e2: Expr) : Expr()
}
Orhan Tozan
03/10/2021, 10:05 AMval foo = Const(1)
second one is
val foo = Expr.Const(1)
I almost always prefer the secondMohsen Shahini
03/10/2021, 11:51 AMOrhan Tozan
03/10/2021, 11:52 AMBhaskar
04/26/2021, 3:09 AMExpr
class, which makes sense when you are sure you don't want other implementations for those data classes Const
& Sum
.
First one is not composing them rather keeping them de-coupled.