a ::: b
和a.:::(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)
答案 0 :(得分:3)
Scala中以:
结尾的所有函数都是右关联的,因此,表达式a ::: b
的计算结果为b.:::(a)
。
答案 1 :(得分:3)
当您使用infix notation时,以:
结尾的方法(或运算符)是右关联的 - 换句话说,该方法在其右侧的对象上调用,而对象在其左侧作为参数传递。
因此1 :: Nil
与Nil.::(1)
相同。正如a ::: b
与b.:::(a)
相同。
答案 2 :(得分:1)
因为当你输入
a ::: b
最后一个':'使函数成为正确的关联。
因此,您在:::
而不是b
:
a
b.:::(a)