- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
以下代码导致最后一行出现 StackOverflowError。
object StackTest extends App{
@tailrec def incrementValues(acc: Map[String, Int], inc: Int): Map[String, Int] = {
if(inc == 0) acc
else incrementValues(acc.mapValues(_ + 1), inc - 1)
}
val myMap = incrementValues(Map("key" -> 0), 10000)
myMap.foreach(println)
}
Exception in thread "main" java.lang.StackOverflowError
at scala.collection.MapLike$MappedValues.foreach(MapLike.scala:245)
at scala.collection.TraversableLike$WithFilter.foreach(TraversableLike.scala:777)
at scala.collection.MapLike$MappedValues.foreach(MapLike.scala:245)
at scala.collection.TraversableLike$WithFilter.foreach(TraversableLike.scala:777)
at scala.collection.MapLike$MappedValues.foreach(MapLike.scala:245)
...
protected class MappedValues[C](f: B => C) extends AbstractMap[A, C] with DefaultMap[A, C] {
override def foreach[D](g: ((A, C)) => D): Unit = for ((k, v) <- self) g((k, f(v)))
def iterator = for ((k, v) <- self.iterator) yield (k, f(v))
override def size = self.size
override def contains(key: A) = self.contains(key)
def get(key: A) = self.get(key).map(f)
}
/** Transforms this map by applying a function to every retrieved value.
* @param f the function used to transform values of this map.
* @return a map view which maps every key of this map
* to `f(this(key))`. The resulting map wraps the original map without copying any elements.
*/
def mapValues[C](f: B => C): Map[A, C] = new MappedValues(f)
最佳答案
mapValues
已知是一个陷阱,因为它确实只创建了一个包装 View 函数,而不是急切地生成一个新集合。因此,在您的示例中,您创建了一个嵌套级别为 10,000 的数据结构。
您可以使用常规 map
方法:
acc.map(tup => (tup._1, tup._2 + 1))
acc.map { case (key, value) => (key, value + 1) }
关于Scala Map.mapValues stackoverflowerror,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25450887/
我有一个 Scala 作业,到目前为止,一切顺利。除了这个之外,所有内容都可以编译: @transient val aggs = msgs.transform { rdd =>
以下代码导致最后一行出现 StackOverflowError。 object StackTest extends App{ @tailrec def incrementValues(acc:
mapValues 方法创建一个新的 Map,它通过应用给定的函数将查询结果修改为原始 Map。如果同一个值被查询两次,传递给 mapValues 的函数将被调用两次。 例如: case class
我试图理解 mapValues方法适用于 Calendar Heatmap 的以下代码. 首先,一个函数加载一个字典: private func readHeatmap() -> [String: I
我有一张像这样的 map ,其中包含数百万个条目: private final Map tops = new HashMap<>(); 我需要获取值列表,这可以通过调用 java.util.Map V
我正在尝试以最优雅的方式使用 lodash 来转换以下对象: var original = { email: { 0: 'user01@gmail.com', 1: 'user02
我正在努力链接 _.mapValues .这是代码 var result = _.mapValues(results[0], function(val, qname) { return (re
在 _.mapValues 中,我想获得一些具有一定延迟的修改值(例如来自数据库),但我遇到了问题:当我在同步模式下修改值时,一切都很好,当我尝试使用 promise 或回调它的工作时不正确(在第一种
在我正在做的一个项目中,我经常发现自己在做以下模式。 给定一个案例类 X(a: A, b: B, c:C, d: Int),以及这样一个 X 的列表 xs: List[X], 我想做的数据库等效于按
类似于: How to infer a typed array from a dynamic key array in typescript? 我希望键入一个通用对象,该对象接收任意键到查找值的映射,
我在下面有这个示例 RDD(下面称为 rdd)。数据集是 (String, Int) 的元组: (some | random | value, 10) (some | random | value,
我正在尝试使用 messagpack.write(map) 序列化 map .在使用 messagepack.read(byte[]) 进行反序列化期间我得到了MapValue .但我无法使用 Map
刚才我很惊讶地得知mapValues产生一个 View 。结果如下例所示: case class thing(id: Int) val rand = new java.util.Random val
引用他们的javadoc,KStream.transformValues需要额外的storeName参数,因此是有状态的,同时通过transformValues方法,我们可以利用ProccessorC
将 lodash _.mapValues 转换为 ES6 有哪些不同的方法。 代码: var fruits= { 'apple': { 'name': 'apple', 'number
我正在尝试使用 PHP 和 Google api 将数据推送到 firestore 数据库。 在我在网络上看到的文档和示例中,我可以在发送数据时使用 mapValue 和 arrayValue。 我使
我一直在寻找一种方法来轻松获得 mongoose js 的结果,只需编写如上所示的查询即可: Article.find().skip(data.skip) 如果我想添加另一个查询,只需输入查询即可:
我正在寻找 plyr::mapvalues 的可读替代品在 data.table . 例如,在 plyr::mapvalues , 如果我想更改 carb 的值在 mtcars至 type1, typ
plyr::mapvalues 可以根据字典重新编码向量,即现有值和替换值的两个匹配向量。 library(plyr) data <- c("a", "b", "c", "a") dict_old <
我编写了以下小的实用程序函数,该函数使我的代码易于阅读: mapValues(Map map, Function f) => map.map((k, v) => MapEntry(k, f(v)));
我是一名优秀的程序员,十分优秀!