Scala-具有大量字段的域对象
这可能是一个愚蠢的问题,但我对Scala比较陌生,所以请容忍我。我试图为Scala中的Spark作业建模一个域对象,它反映了源记录的数据结构,包含100多个字段。我正试图找出最好的建模方法,因为我觉得简单地将所有字段添加到一个case类中并不舒服。我曾考虑将密切相关的字段分组到嵌套的case类中,但后来我在一些地方看到,不建议嵌套case类。我希望能就最佳方法提供一些意见 编辑:回应阿尔瓦罗的评论: 因此,本质上我们是说,不建议这样做:Scala-具有大量字段的域对象,scala,apache-spark,dao,dto,Scala,Apache Spark,Dao,Dto,这可能是一个愚蠢的问题,但我对Scala比较陌生,所以请容忍我。我试图为Scala中的Spark作业建模一个域对象,它反映了源记录的数据结构,包含100多个字段。我正试图找出最好的建模方法,因为我觉得简单地将所有字段添加到一个case类中并不舒服。我曾考虑将密切相关的字段分组到嵌套的case类中,但后来我在一些地方看到,不建议嵌套case类。我希望能就最佳方法提供一些意见 编辑:回应阿尔瓦罗的评论: 因此,本质上我们是说,不建议这样做: case class Product(name: Stri
case class Product(name: String,
desc: String,
productGroup: String) {
case class ProductPack(packType: String,
packQuantity: Int,
packQuantityUnit: String,
packUnitPrice: Float)
}
虽然这样可以:
case class Product(name: String,
desc: String,
productGroup: String,
productPack: ProductPack) {
}
case class ProductPack(packType: String,
packQuantity: Int,
packQuantityUnit: String,
packUnitPrice: Float) {
}
您的更新是正确的 另一种选择:如果一个案例类在另一个概念的上下文中基本上是有意义的,那么有时我会在该概念的一个同伴中定义该案例类:
case class Product(
name: String,
desc: String,
productGroup: String
productPack: Product.Pack
)
object Product {
case class Pack(
packType: String,
packQuantity: Int,
packQuantityUnit: String,
packUnitPrice: Float
)
}
这也应该是好的。类包含在对象中,但它不是“嵌套”在
产品
类中。您在哪里读到不建议嵌套案例类?这是我阅读指南的地方之一,指南不鼓励在其他案例类(嵌套类)中定义案例类。但是,让一个案例类的属性引用其他案例类(在该类之外定义)是可以的。如果您提供一些实际的代码,可能是一个具有多个属性的类,我们可能可以提供更相关的帮助。如果您需要在单个案例类中添加22个以上的字段,请阅读以下内容:感谢您的输入。伴随对象中的case类看起来更干净