如何有效地从scala中的枚举中选择一个随机元素?

lad*_*ads 4 random enums scala

我有这样的枚举:

object Animals extends Enumeration {
  type Animals = Value
  val Monkey = Value("Monkey")
  val Lion = Value("Lion")
  val Dog = Value("Dog")
  val Cat = Value("Cat")
}
Run Code Online (Sandbox Code Playgroud)

我需要从这个枚举中随机选择一个元素.我怎样才能在scala中有效地做到这一点?

The*_*aul 6

不到一分钟的文档显示

final def maxId: Int

高于用于识别此枚举中的值的那些中的最高整数的那个.

final def apply(x: Int): Value

具有给定id x的此枚举的值

所以

Animals(scala.util.Random.nextInt(Animals.maxId))
//> res0: recursion.recursion.Animals.Value = Monkey
Run Code Online (Sandbox Code Playgroud)

(假设使用了所有值,并且您没有将初始值传递给构造函数)

或者您可以枚举值,Animals.values然后参考这个问题