【问题标题】:How get random element from list in one line如何从一行中的列表中获取随机元素
【发布时间】:2014-09-22 04:25:16
【问题描述】:

我有以下代码:

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

【问题讨论】:

  • 我不这么认为,除非您会编写一些帮助代码(很可能使用 pimp-my-library 模式),但这是您的选择吗?

标签: scala


【解决方案1】:

当然 - 使用 pimp my library 模式向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))
}

另见:

【讨论】:

    猜你喜欢
    • 2015-09-22
    • 1970-01-01
    • 1970-01-01
    • 2013-01-13
    • 1970-01-01
    • 2018-02-12
    • 1970-01-01
    • 2018-10-19
    相关资源
    最近更新 更多