2010-05-10 78 views

回答

42

這是因爲MyEnum是一個對象和對象是單例。將單例作爲參數傳遞給case類是不可能的,因爲這會強加這個對象的多個實例。

如果你想通過MyEnum的值(即枚舉值)使用MyEnum.Value

case class XY(enum: MyEnum.Value) 

object MyEnum extends Enumeration { val OP1, OP2 = Value } 

後,您可以使用MyEnum預期:

val x = XY(MyEnum.OP1) 

順便說一句:一個常見模式是定義一個類型別名,因此您可以稍微調整代碼(即使用MyEnum而不是MyEnum.ValueOP1而不是MyEnum.OP1):

object MyEnum extends Enumeration { 
    type MyEnum = Value 
    val OP1, OP2 = Value 
} 

import MyEnum._ 

case class XY(enum: MyEnum) 

class C { 
    val x = XY(OP1) 
} 
+0

好我新有一種方法! – user21845 2010-05-10 19:19:38