Scala List附加操作 - 需要解释

时间:2017-02-16 09:45:39

标签: scala

根据解释和我对scala中的附加操作的理解,它是正确的关联。所以给出了一个声明 List1 ::: List2只是List2.:::List1。有了这个说我试图做以下操作

val list1 = List(1,2,3,4) 
val list2 = List(5,6,7,8)  
list1 ::: list2 // this is good

list2.::: list1 //ERROR - Not applicable to List[B]code here

为什么第二个追加操作不编译?

1 个答案:

答案 0 :(得分:1)

它不是编译的原因是因为那里有语法的混合和数学。 您可以使用常规语法进行方法调用:

list2.:::(list1)

注意点和括号。

或者您可以使用中缀表示法来调用arity-1的方法:

list1 ::: list2

但你不能在两者之间混合。

:::运算符实际上是一个prepend而不是append运算符, 它在list2上运行(如你所说,它是正确的关联)并在它前面添加了list1的元素。