gpt4 book ai didi

使用元组的 Scala 折叠操作

转载 作者:行者123 更新时间:2023-12-04 19:56:55 26 4
gpt4 key购买 nike

val g = List(1,2,3)

val k = g.fold((0,0))((a:Tuple2[Int,Int],b:Int)=>(a._1+b,a._2+1))

但我得到以下错误 =

found   : ((Int, Int), Int) => (Int, Int)
required: (Any, Any) => Any
g.fold((0,0))((a:Tuple2[Int,Int],b:Int)=>(a._1+b,a._2+1))

有人可以解释一下,为什么它期待“任何”类型。

但以下工作:

g.map((_,1))

g.map((_,1)).fold((0,0))((a,b)=> (a._1+b._1,a._2+b._2))
res211: (Int, Int) = (6,3)

最佳答案

看起来你的意思是使用 foldLeft:

val k = g.foldLeft((0,0))((a:Tuple2[Int,Int],b:Int)=>(a._1+b,a._2+1))

折叠有签名

def fold[A1 >: A](z: A1)(op: (A1, A1) ⇒ A1): A1 

因此它要求元素类型与累加器类型匹配,而您的示例对两者都有不同的类型。

关于使用元组的 Scala 折叠操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33972841/

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