Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在scala中有效地从枚举中选取随机元素?_Scala_Random_Enums - Fatal编程技术网

如何在scala中有效地从枚举中选取随机元素?

如何在scala中有效地从枚举中选取随机元素?,scala,random,enums,Scala,Random,Enums,我有这样一个枚举: object Animals extends Enumeration { type Animals = Value val Monkey = Value("Monkey") val Lion = Value("Lion") val Dog = Value("Dog") val Cat = Value("Cat") } 我需要从这个枚举中随机选取一个元素。我如何在scala中有效地做到这一点?不到一分钟的节目时间 final def maxId:Int 高

我有这样一个枚举:

object Animals extends Enumeration {
  type Animals = Value
  val Monkey = Value("Monkey")
  val Lion = Value("Lion")
  val Dog = Value("Dog")
  val Cat = Value("Cat")
}

我需要从这个枚举中随机选取一个元素。我如何在scala中有效地做到这一点?

不到一分钟的节目时间

final def maxId:Int

高于此枚举中用于标识值的整数中最高整数的整数

final def apply(x:Int):值

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

所以

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

或者,您可以使用
Animals.values
枚举值,然后参考

Animals(scala.util.Random.nextInt(Animals.maxId))
//> res0: recursion.recursion.Animals.Value = Monkey