2014-10-29 72 views
0

List#foldLeft,爲什麼下面的Scala代碼2.11.2:混亂超過列表#foldLeft行爲

scala> List(1,2,3).foldLeft(2) _ + _ 
res0: String => String = <function1> 

返回<function1>

此外,爲什麼以下結果等於<function1>5

scala> res0("5") 
res2: String = <function1>5 
+0

foldLeft和foldRight是curried函數。他們在兩組括號中取兩個參數(z和f),而不是一個:'def foldLeft [B](z:B)(f:(B,A)=> B):B' F。 – 2014-10-30 21:05:04

回答

4

我認爲你試圖使用中綴表示法(無括號)和_佔位符和它試圖把它咖喱成函數混淆編譯器。這適用於我:

scala> List(1,2,3).foldLeft(2) (_ + _) 
res1: Int = 8