制作一个特征需要一个未指定的枚举作为其界面的一部分

时间:2016-07-04 12:11:26

标签: scala enumeration traits

当我不想将其锁定到某个特定Enumeration时,如何定义一个特征,该特征定义我的案例类应该包含某种Enumeration?有关详细信息,请参阅说明:

我有一些数据每个条目有三个整数字段,每个整数都会增加数据的特异性。

第一个字段是数据的整体类型,例如它来自哪个行业(例如烘焙),第二个字段是它是什么样的产品(例如蛋糕),第三个字段是产品的类型(例如草莓派。

我正试图像这样映射这些数据:

  1. 每个行业都有自己的案例类

    case class BakingProduct(...)
    
  2. 每个案例类都有一个Enumeration

    case object BakingType extends Enumeration { type Product = Value, ... }
    case class BakingProduct(primary: BakingType.Product, ...)
    
  3. 每个案例类还为最终字段保留Int(对我来说,为Enumeration制作case class BakingProduct(primary: BakingType.Product, secondary: Int) 并不重要。

    Product
  4. 对我而言,这可以在可读性和可写性之间取得良好的平衡,而不是为每个组合创建案例类,但我的问题是我想创建一个可以包含这些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}}(如果是,如何?我无法弄清楚)?如果可能的话,我也想避免使特性变得通用,所以每当我处理一个参数时我都不必给出类型参数。但如果有一个很好的方式来做泛型,那么这也是受欢迎的,以及其他建议:)

0 个答案:

没有答案