2016-04-03 7 views
2

は、私はこのような列挙型があります。スカラーの列挙体からランダムな要素を効率的に選択するにはどうすればよいですか?

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

を、私はこの列挙からランダムな要素で選択する必要があります。私はいかに効率的にスカラーでこれを行うことができますか? documentationと分未満

答えて

4

この列挙の値を識別するために使用されるものの中で最も高い整数よりも高い

final def maxId: Int

いずれかを示します。すべての値が使用されていると仮定すると指定されたID X

final def apply(x: Int): Value

この列挙の値だから

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

(、そしてあなたは、コンストラクタに初期値を渡していなかった)

それともAnimals.valuesと値を列挙して、this question

を参照してください可能性があり
関連する問題