发送函数以在Scala中折叠

时间:2016-09-21 09:20:00

标签: scala

如何发送累积函数以在Scala中折叠,下面的示例将说明(Int,Int,Int) does not take parameters

我的问题是:

  • 为什么会出现此错误?
  • 在下面的代码中,如何按照惯例方式做我想要的事情?

    def a(xs: List[(Int,Int)]): Int = {
    
    def logic(acc: (Int,Int, Int), post: (Int,Int)): (Int,Int,Int) = {
        // do some logic
    
        (1, 2, 3)
    }
    
    val to = xs foldLeft((0,0,0))(logic _)
    
    to._3
    }
    

4 个答案:

答案 0 :(得分:2)

问题在于:

xs foldLeft((0,0,0))(logic _)

除非是操作员,否则永远不要使用无点符号。这样就行了。

xs.foldLeft((0,0,0))(logic _)

如果没有上下文,我相信这是不恰当的。

答案 1 :(得分:1)

我没有达到您的代码的目标,但您描述的问题可以通过这种方式解决:

val to = xs.foldLeft((0,0,0))(logic)

答案 2 :(得分:1)

试试这个

xs.foldLeft((0,0,0), logic)

答案 3 :(得分:1)

foldLeft是一个curried函数,因此它需要. - 转到xs.foldLeft并且它会起作用。