gpt4 book ai didi

scala:以功能方式从集合中累积一个var(即没有vars)

转载 作者:行者123 更新时间:2023-12-03 15:18:37 25 4
gpt4 key购买 nike

这是一个新手问题

我有以下代码:

var total = 0L
docs.foreach(total += _.length)

在文档中,我有一组具有 .length 属性的对象

我想要类似的东西:
val total = docs.[someScalaMethod](0, (element, acum) => acum + element.length )

我的意思是,一种迭代每个元素并传递累加器变量的方法......

我传递的第一个零应该是累加器变量的初始值。

如何实现?

最佳答案

这称为折叠。几乎就是你所说的:

docs.foldLeft(0)((accum, element) => accum + element.length)

对于从左到右遍历集合的版本(通常更可取;从右到左是 foldRight ,而 2.9 有一个 fold 可以从任何地方开始,但它对如何转换类型有限制)。

一旦你习惯了这一点,就会有一个简写版本的 fold left,累加器在左边(想想它在列表中从左到右推送),并且你使用占位符作为变量名,因为你每个只使用一次: (0 /: docs)(_ + _.length)

关于scala:以功能方式从集合中累积一个var(即没有vars),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8375755/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com