我有一些数据类,这很短,所以我将它们组合在一个文件中 .
我可以在Kotlin文件中定义它们,但它更喜欢它是类/对象中的范围,因此该文件不仅仅是一个文件,而是在类/对象下进行更好的分组
我可以
object Model {
data class Result(val query: Query)
data class Query(val searchinfo: SearchInfo)
data class SearchInfo(val totalhits: Int)
}
我也可以这样做
class Model {
data class Result(val query: Query)
data class Query(val searchinfo: SearchInfo)
data class SearchInfo(val totalhits: Int)
}
他们对我看起来都一样 . 有什么不同,如果有一个首选的方法来确定我的数据类的范围?
2 回答
我建议不要使用类来确定其他类的范围 . 正如托德在他的回答中所解释的那样,你可以使用密封的类,它提供exhaustive when checks的实际好处 . 如果您不需要此功能,Kotlin有一个内置的作用域机制 - 包:
包含多个顶级元素的文件没有任何问题 . 这是一个有用的语言功能,在这种情况下使用 .
另一种选择是使所有数据类成为密封的
Model
类的子类 . 这将为您提供在一个地方定义它们的好处,因为Kotlin对密封类强制执行 . 此外,让类型系统了解Model
类型的所有实例在when
表达式中也很有用,因为它不会要求您放置else ->
块 .你可以直接使用它们:
而不是将它们包装在另一个
class
或object
中,你必须像这样引用它们: