相关疑难解决方法(0)

Scala:为什么mapValues会生成一个视图,是否有任何稳定的替代方案?

刚才我很惊讶地发现了mapValues一个视图.结果如下例所示:

case class thing(id: Int)
val rand = new java.util.Random
val distribution = Map(thing(0) -> 0.5, thing(1) -> 0.5)
val perturbed = distribution mapValues { _ + 0.1 * rand.nextGaussian }
val sumProbs = perturbed.map{_._2}.sum
val newDistribution = perturbed mapValues { _ / sumProbs }
Run Code Online (Sandbox Code Playgroud)

我的想法是,我有一个分布,它有一些随机性,然后我重新规范它.代码实际上失败了它的初衷:因为mapValues生成a view,_ + 0.1 * rand.nextGaussian总是在perturbed使用时重新评估.

我现在正在做类似的事情distribution map { case (s, p) => (s, p + 0.1 * rand.nextGaussian) },但这只是一点点冗长.所以这个问题的目的是:

  1. 提醒那些不了解这一事实的人.
  2. 寻找他们mapValues输出 …

scala map

59
推荐指数
2
解决办法
4338
查看次数

标签 统计

map ×1

scala ×1