覆盖Scala枚举值

Ral*_*lph 31 enumeration scala

据我所知,Scala具有Value(Int),Value(String)和Value(Int,String)的Enumeration Value类的定义.

有没有人知道创建一个新的Value子类来支持不同的构造函数的例子?

例如,如果我想创建一个带有Value(Int,String,String)对象的Enumeration,我该怎么做?我想要使​​用Enumeration类的所有其他好处.

谢谢.

Tho*_*ung 44

Enumeration值是Val类的实例.可以扩展此类,并可以添加工厂方法.

object My extends Enumeration {
    val A = Value("name", "x")
    val B = Value("other", "y")
    class MyVal(name: String, val x : String) extends Val(nextId, name)
    protected final def Value(name: String, x : String): MyVal = new MyVal(name, x)
}

scala> My.B.id
res0: Int = 1

scala> My.B.x
res1: String = y
Run Code Online (Sandbox Code Playgroud)