2016-09-21 79 views
0

如何發送一個累加函數在Scala中摺疊,下面的例子會說(Int,Int,Int) does not take parameters發送函數在Scala中摺疊

我的問題是:

  • 爲什麼我得到這個錯誤?
  • 如何在下面的代碼中做我想要的方法?

    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 
    } 
    

回答

1

我不明白,但你所描述的問題是可以解決這樣你的代碼的目標:

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

試試這個

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

的問題是這裏:

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

除非是針對操作員,否則絕不要使用無點符號。這樣它的工作。

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

沒有上下文我相信這足夠慣用。

1

foldLeft是一個咖喱功能,所以它需要一個. - 去xs.foldLeft它會工作。

+0

Downvote沒有解釋不會讓任何人受益。 – sebszyller