1

Map我正在尝试在using中添加键值对,reduceLeft()但出现错误。如果我使用添加键值对,foldleft()我会得到正确的答案。这个错误是reduceLeft什么意思,正确的代码是什么?

代码:

object Dcoder extends App
{
    var i = Map(1->2, 3->4, 5->6)
    var o = i.reduceLeft((a,b) => a._1 + b._1)
    println(o)
}

错误:

source_file.scala:9: error: type mismatch;
 found   : Int
 required: (Int, Int)
var o=i.reduceLeft((a,b)=>a._1+b._1)
                          ^
one error found
4

1 回答 1

2

您可以fold从一种类型转换到另一种类型,但reduce限制性更强。您不能将对的集合 type 减少(Int,Int)为单个 type Int

这通过将一对集合减少为单个对然后剥离第二个元素来起作用。

Map(1->2, 3->4, 5->6).reduceLeft(_._1 + _._1 -> 0)._1  //res0: Int = 9
于 2018-04-28T20:17:39.023 回答