scala /中的List方法:
def /:[B](z: B)(op: (B, A) => B): B = foldLeft(z)(op)
foldLeft的调用是:
(List(1, 7, 2, 9) foldLeft 0) (_ + _)
调用/:是:
(0 /: List(1, 7, 2, 9)) (_ + _)
那个0实际上是方法的第一个参数,为什么方法的0放在前面,而不是像后面的foldLeft
答案 0 :(得分:0)
以冒号:
结尾的方法名称在Scala中是右关联的,也就是当它们在运算符语法中使用时,它们在它们右侧的对象上被调用,其对象位于它们的左侧作为参数。
所以你的调用
(0 /: List(1, 7, 2, 9)) (_ + _)
与
基本相同List(1, 7, 2, 9)./:(0) (_ + _ )
如果习惯了语义,那么第一个允许更好的语法。