[英]Which one is correct about sealed class in Kotlin?
似乎有两种方法来定义密封类,哪种方法在Code A和CodeB之间是正确的?
代码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()
}
https://kotlinlang.org/docs/reference/sealed-classes.html
要声明一个密封的类,您可以将密封的修饰符放在该类的名称之前。 密封类可以具有子类,但是所有子类都必须与密封类本身在同一文件中声明。 (在Kotlin 1.1之前,规则更加严格:类必须嵌套在密封类的声明中)。
如果您使用的是<kotlin 1.1,则必须将这些类嵌套在密封的类中; 否则,您可以在类之外声明它们,但这些类必须位于同一文件中。 两者都适用于Kotlin> = 1.1
我不能说我亲自使用了第一种编写密封类的方法,所以我不确定这在语法上是否正确。 如果是这样,那的确是代码风格的偏爱。 从维护的角度来看,我个人更喜欢第二个,因为它更易于阅读和确保封装在该密封类中。
问题未解决?试试以下方法:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.