Dies liegt daran, MyEnum
ein Objekt und Objekte sind Singletons. Es ist nicht möglich, Singletons als Argumente für Fallklassen zu übergeben, da dies bedeuten würde, dass es mehr als eine Instanz dieses Objekts gibt.
Wenn Sie einen Wert von MyEnum (dh ein Aufzählungswert) übergeben möchten verwenden MyEnum.Value
:
case class XY(enum: MyEnum.Value)
object MyEnum extends Enumeration { val OP1, OP2 = Value }
Danach Sie MyEnum
verwenden können, wie erwartet:
val x = XY(MyEnum.OP1)
By the way: A Das allgemeine Muster besteht darin, einen Typalias zu definieren, so dass Sie den Code ein wenig anpassen können (z. B. MyEnum
anstelle von MyEnum.Value
und OP1
anstelle von 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)
}
Großartig ich neu da war ein Weg! – user21845