gpt4 book ai didi

scala - 使用折叠对对象属性列表求和

转载 作者:行者123 更新时间:2023-12-01 09:56:38 28 4
gpt4 key购买 nike

在这段代码中,我尝试将每个值加倍,然后对 v 求和:

case class s(v : Int)
val l = List(s(2) , s(3))
l.fold(0) ((_.v * 2) + (_.v * 2))

但我收到错误:

  value v is not a member of Any

如何对列表中对象的每个属性执行操作?

最佳答案

正如其他作者还指出的那样,fold 需要您的类的父类(super class)型的累加器。类本身也是它自己的父类(super class)型,所以我们可以这样写

case class s(v : Int)
val l = List(s(2) , s(3))
l.fold(s(0)){case (acc, elem) => s((acc.v * 2) + (elem.v * 2))}.v

但这确实感觉太沉重了。在这种情况下很简单:

l.map(_.v*2).sum

会做得更好。

关于scala - 使用折叠对对象属性列表求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25274782/

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