gpt4 book ai didi

class - 将枚举参数传递给案例类不起作用

转载 作者:行者123 更新时间:2023-12-03 10:36:56 26 4
gpt4 key购买 nike

有人能告诉我为什么这不起作用吗?

case class XY(enum: MyEnum)

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

Error: not found: type MyEnum

最佳答案

这是因为 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)
}

关于class - 将枚举参数传递给案例类不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2805460/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com