The extensible Enum pattern is relatively common but as I understand it neither Scala or Jave Enums are extensible. What's currently the best way to implement the extensible Enum pattern in Scala? So far using objects rather than Scala Enums or Java Enums, I have come up with the following:
trait TerrHexStd
import pEdit.TerrHexE
import pReal.TerrHexR
object TerrPlain extends TerrHexE with TerrHexR
object TerrForrest extends TerrHexE with TerrHexR
object TerrHill extends TerrHexE with TerrHexR
object TerrMountain extends TerrHexE with TerrHexR
object TerrDesert extends TerrHexE with TerrHexR
object TerrRiver extends TerrHexE with TerrHexR
object TerrSea extends TerrHexE with TerrHexR
trait TerrHexE extends TerrHexStd //in separate package
object TerrUndef extends TerrHexE
trait TerrHexR extends TerrHexStd // in another separate package
This is pretty horrible. But it is at least DRY.
I have edited my code for clarification of the problem.
trait TerrHexStdwithcase class TerrHexStd(colour : ColorInt), replace object definitions with vals and place them inside an objectColorSetto import them all in one callimport ColorSet._. Would such substitution provide tolerable verbosity level for you?