val g = List(1,2,3)
val k = g.fold((0,0))((a:Tuple2[Int,Int],b:Int)=>(a._1+b,a._2+1))
Run Code Online (Sandbox Code Playgroud)
但我得到以下错误=
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))
Run Code Online (Sandbox Code Playgroud)
有人可以解释,为什么它期待"任何"类型.
但下面的工作:
g.map((_,1))
g.map((_,1)).fold((0,0))((a,b)=> (a._1+b._1,a._2+b._2))
res211: (Int, Int) = (6,3)
Run Code Online (Sandbox Code Playgroud)
看起来你的意思是使用foldLeft:
val k = g.foldLeft((0,0))((a:Tuple2[Int,Int],b:Int)=>(a._1+b,a._2+1))
Run Code Online (Sandbox Code Playgroud)
fold 有签名
def fold[A1 >: A](z: A1)(op: (A1, A1) ? A1): A1
Run Code Online (Sandbox Code Playgroud)
所以它需要元素类型匹配累加器类型,而您的示例具有不同的类型.