我是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
你有倒退的语法:
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).)