为什么以下两个foldLeft
都会产生相同的输出?
#1
scala> List(1,2,3).foldLeft(List[Int]())( (acc, el) => acc :+ el)
res114: List[Int] = List(1, 2, 3)
现在使用_ :+ _
作为(B, A) => B
参数。
#2
scala> List(1,2,3).foldLeft(List[Int]())(_ :+ _)
res115: List[Int] = List(1, 2, 3)
特别是,在第二种情况下,没有明确附加accumulator
会让我感到困惑。
答案 0 :(得分:8)
_ :+ _
只是(x1, x2) => x1 :+ x2
的简写,就像list.map(_.toString)
只是list.map(x => x.toString)
一样。
详细了解占位符语法here。