如何在Scala中定义具有特定数值的枚举类型

8 浏览
0 Comments

如何在Scala中定义具有特定数值的枚举类型

在Scala中,如何定义具有特定数值的枚举,并能够从类型中获取值列表?

如果我使用Enumeration类型来定义枚举,可以按照以下方式进行:

object MyEnum extends Enumeration {
  type MyEnum = Value
  val A: Byte = -10
  val B: Byte = 0
  val C: Byte = 10
}

然后,尝试按如下方式获取值:

val byteValues = MyEnum.values.toList.map(_.id.toByte)

然后我得到了一个空序列。

0
0 Comments

问题的原因是在Scala中定义枚举类型时,希望给每个枚举值指定特定的数值,但是直接使用Enumeration的方式定义枚举值时无法实现这个需求。解决方法是使用Enumeration的Value方法来定义枚举值,并为每个枚举值指定具体的数值。

具体的解决方法如下:

object MyEnum extends Enumeration {
  type MyEnum = Value
  val A = Value(-10)
  val B = Value(0)
  val C = Value(10)
}

然后就可以通过MyEnum.A、MyEnum.B、MyEnum.C来获取枚举值了。

需要注意的是,这里的type声明不是必需的,不声明也可以正常使用。但是如果不声明type,则在声明变量时需要使用MyEnum.Value而不是直接使用MyEnum。更多关于这个问题的信息可以参考这个答案

0
0 Comments

问题的出现原因是:原问题是关于如何在Scala中定义具有特定数字值的枚举。然而,原问题的解决方案给出的是如何定义连续的枚举。因此,问题的提出者需要进一步指定如何定义具有特定数字值的枚举。

解决方法是:根据提问者的更新,可以通过给每个枚举值指定具体的数值来定义具有特定数字值的枚举。以下是解决方法的代码示例:

object MyEnum extends Enumeration {
  val A = Value(-10)
  val B = Value(0)
  val C = Value(10)
}

这样,枚举值A的数值为-10,枚举值B的数值为0,枚举值C的数值为10。通过这种方式,可以定义具有特定数字值的枚举。

0