2015-11-04 57 views
1

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

Scala中,其与一个:结束所有的功能都是右结合,并且因此,表达a ::: b计算结果为b.:::(a)

3

当使用infix notation,与:结束方法(或操作员)是右结合 - 换句话说,该方法被调用的对象在其右侧上,并且目的是其左侧作为参数传递。因此1 :: NilNil.::(1)相同。正如a ::: bb.:::(a)一样。

1

因为当你键入

a ::: b 

最后一个 ':' 使功能右结合。 因此,您所呼叫:::b没有a

b.:::(a)