2 FoldLefts是平等的

Kev*_*ith -1 scala

为什么以下两个foldLeft产生相同的输出?

#1

scala> List(1,2,3).foldLeft(List[Int]())( (acc, el) => acc :+ el)
res114: List[Int] = List(1, 2, 3)
Run Code Online (Sandbox Code Playgroud)

并且,现在使用_ :+ _作为(B, A) => B参数.

#2

scala> List(1,2,3).foldLeft(List[Int]())(_ :+ _)
res115: List[Int] = List(1, 2, 3)
Run Code Online (Sandbox Code Playgroud)

特别是,accumulator在第二种情况下缺乏明确附加的内容使我感到困惑.

Mar*_*rth 8

_ :+ _简直就是一个简写(x1, x2) => x1 :+ x2,就像list.map(_.toString)是根本list.map(x => x.toString).

此处查看有关占位符语法的更多信息.