为什么列表连接的行为不同?

时间:2015-11-04 10:13:03

标签: scala

a ::: ba.:::(b)之间的区别是什么?

scala> val a = List(1,2,3,4)
a: List[Int] = List(1, 2, 3, 4)

scala> val b = List(5)
b: List[Int] = List(5)

scala> a.:::(b)
res6: List[Int] = List(5, 1, 2, 3, 4)

scala> a ::: b
res7: List[Int] = List(1, 2, 3, 4, 5)

3 个答案:

答案 0 :(得分:3)

Scala中以:结尾的所有函数都是右关联的,因此,表达式a ::: b的计算结果为b.:::(a)

答案 1 :(得分:3)

当您使用infix notation时,以:结尾的方法(或运算符)是右关联的 - 换句话说,该方法在其右侧的对象上调用,而对象在其左侧作为参数传递。

因此1 :: NilNil.::(1)相同。正如a ::: bb.:::(a)相同。

答案 2 :(得分:1)

因为当你输入

a ::: b

最后一个':'使函数成为正确的关联。 因此,您在:::而不是b

上致电a
b.:::(a)