【问题标题】:How to define an enum with specific numeric values in Scala如何在 Scala 中定义具有特定数值的枚举
【发布时间】:2019-03-19 10:34:10
【问题描述】:

如何在 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)

然后我得到一个空序列。

【问题讨论】:

    标签: scala enums


    【解决方案1】:

    定义枚举的正确方法是:

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

    然后获取值就可以了。

    【讨论】:

    • 请注意,type 声明不是必需的,没有它也可以工作。
    • @Tim,是的,但是您必须在声明变量的任何地方都使用 MyEnum.Value,而不仅仅是使用 MyEnum。有关这方面的更多信息,请参阅this answer
    【解决方案2】:

    您可以为Value 方法提供一个参数以将枚举设置为特定值。后续不带参数调用Value 将生成序列中的下一个整数

    object MyEnum extends Enumeration {
      val A = Value(-1)
      val B, C = Value
    }
    

    在问题更改后更新

    如何使用我的答案来解决更新的问题应该很明显,但这里是代码,以防万一

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

    【讨论】:

    • 我的问题是关于特定的数值,不一定是顺序的。我将更改我的问题以澄清。
    猜你喜欢
    • 2022-06-07
    • 1970-01-01
    • 2011-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-07
    • 1970-01-01
    • 2019-07-18
    相关资源
    最近更新 更多