我有一个这样的枚举:
object Animals extends Enumeration {
type Animals = Value
val Monkey = Value("Monkey")
val Lion = Value("Lion")
val Dog = Value("Dog")
val Cat = Value("Cat")
}
我需要随机选择此枚举中的元素。我怎么能在scala中有效地做到这一点?
答案 0 :(得分:5)
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
(假设使用了所有值,并且您没有将初始值传递给构造函数)
或者您可以使用Animals.values
枚举值,然后参考this question