当我不想将其锁定到某个特定Enumeration
时,如何定义一个特征,该特征定义我的案例类应该包含某种Enumeration
?有关详细信息,请参阅说明:
我有一些数据每个条目有三个整数字段,每个整数都会增加数据的特异性。
第一个字段是数据的整体类型,例如它来自哪个行业(例如烘焙),第二个字段是它是什么样的产品(例如蛋糕),第三个字段是产品的类型(例如草莓派。
我正试图像这样映射这些数据:
每个行业都有自己的案例类
case class BakingProduct(...)
每个案例类都有一个Enumeration
。
case object BakingType extends Enumeration { type Product = Value, ... }
case class BakingProduct(primary: BakingType.Product, ...)
每个案例类还为最终字段保留Int
(对我来说,为Enumeration
制作case class BakingProduct(primary: BakingType.Product, secondary: Int)
并不重要。
Product
对我而言,这可以在可读性和可写性之间取得良好的平衡,而不是为每个组合创建案例类,但我的问题是我想创建一个可以包含这些trait ProductType {
val primary: Enumeration,
val secondary: Int
}
类的特征;像这样的东西:
case class BakingProduct(primary: BakingType.Product, secondary: Int) extends ProductType
这样
primary
有效,但没有将Enumeration
锁定到特定类型的Enumeration
,这样我就可以为我想要使用的每个特定ProductType
设置Enumeration
。
我是否应该尝试让父Enumeration
包含其他{{1}}(如果是,如何?我无法弄清楚)?如果可能的话,我也想避免使特性变得通用,所以每当我处理一个参数时我都不必给出类型参数。但如果有一个很好的方式来做泛型,那么这也是受欢迎的,以及其他建议:)