Scala枚举子集?

时间:2014-05-27 03:04:08

标签: scala enums

我有两种不同的枚举类型,其中一种用于标准路线North, South, East, West,而另一种包括那些以及Northeast, Northwest, Southeast, Southwest。有没有什么方法可以定义这两个枚举之间的关系,以避免重复和混淆代码,或者它们是否必须保持分离,因为它们具有不同的可能值(尽管有一个是另一个的子集)?

1 个答案:

答案 0 :(得分:2)

如果您使用案例对象而不是枚举(我认为无论如何都会认为它更加惯用),那么您可以这样做:

sealed trait Directions8
sealed trait Directions4 extends Directions8
case object North extends Directions4
case object South extends Directions4
case object East extends Directions4
case object West extends Directions4
case object Northeast extends Directions8
case object Northwest extends Directions8
case object Southeast extends Directions8
case object Southwest extends Directions8