如何从列表中获取随机元素

时间:2014-07-30 13:37:52

标签: scala

我有以下代码:

val A = List(...)
val items = A.map(..magic#1..).filter(..magic#2..).map(..magic#3..)
val rndItem = items(Random.nextInt(items.size))

但我想要这个:

val A = List(...)
val rndItem = A.map(..magic#1..).filter(..magic#2..).map(..magic#3..).getRandom()

我可以在scala上执行此操作吗?

我看到了question#1question#2

1 个答案:

答案 0 :(得分:2)

当然 - 使用pimp my library pattern向List“添加方法”:

// We'll use a value class to avoid allocations (in theory anyway)
implicit class RandomList[A](val self: List[A]) extends AnyVal {
  def getRandom(): A = self(Random.nextInt(self.size))
}

另见: