【问题标题】:Confusion over List#foldLeft Behavior对 List#foldLeft 行为的困惑
【发布时间】:2014-10-29 00:27:20
【问题描述】:

List#foldLeft,为什么是下面的Scala 2.11.2代码:

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

返回 &lt;function1&gt;?

另外,为什么下面的结果等于&lt;function1&gt;5

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

【问题讨论】:

  • foldLeft 和 foldRight 是柯里化函数。它们在两组括号中使用两个参数(z 和 f)而不是一组:def foldLeft[B](z: B)(f: (B, A) =&gt; B): B 其中 z 充当 f 的种子。

标签: scala


【解决方案1】:

我认为您通过尝试使用中缀表示法(无括号)和_ 占位符而混淆了编译器,并且它试图将其转换为函数。这对我有用:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-20
    相关资源
    最近更新 更多