我有以下代码:
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#1和question#2
答案 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))
}
另见: