似乎有两种定义密封类的方法,一种是在代码A和代码B之间正确的?
代码A
sealed class ExprA
data class Const(val number: Double) : ExprA()
data class Sum(val e1: ExprA, val e2: ExprA) : ExprA()
代码B
sealed class ExprB{
data class Const(val number: Double) : ExprB()
data class Sum(val e1: ExprB, val e2: ExprB) : ExprB()
}
答案 0 :(得分:6)
https://kotlinlang.org/docs/reference/sealed-classes.html
要声明一个密封的类,可以在该类的名称前放置一个密封的修饰符。密封类可以具有子类,但是所有子类都必须与密封类本身在同一文件中声明。 (在Kotlin 1.1之前,规则更加严格:类必须嵌套在密封类的声明内)。
如果您使用的是
答案 1 :(得分:0)
我不能说我亲自使用了第一种编写密封类的方法,所以我不确定这在语法上是否正确。如果是这样,那的确是代码风格的偏爱。从维护的角度来看,我个人更喜欢第二个,因为它更易于阅读和确保封装在该密封类中。