为什么list :: element会出错?

use*_*613 0 scala

我是scala的新手,只是在我的空闲时间玩弄它并遇到了这个问题:

如果我有这个清单:

 val list = List(1,2,3,4)
Run Code Online (Sandbox Code Playgroud)

然后说:

 val newList = list :: 5
Run Code Online (Sandbox Code Playgroud)

斯卡拉告诉我

 error: value :: is not a member of Int
Run Code Online (Sandbox Code Playgroud)

但如果我说:

 val newList = list ::: List(5)
Run Code Online (Sandbox Code Playgroud)

斯卡拉完全没问题.为什么我不能将元素追加到a List,但我可以将a的所有元素追加到a List的末尾List

dhg*_*dhg 7

你有倒退的语法:

5 :: list
Run Code Online (Sandbox Code Playgroud)

这将元素5放在前面list.

在Scala中,以冒号(:)结尾的运算符是右关联的.因此5 :: list调用::方法list并给出参数5.

原因list ::: List(5)在于它实际上list是在前面List(5).

顺便说一句,List也分别有运营商+::+前置和附加.(但请记住,前面加上的List是O(1)而附加的是O(n).)