简单的说,:::用来拼接两个List
scala> List(1, 2) ::: List(3, 4)
res0: List[Int] = List(1, 2, 3, 4)
而::用来拼接一个元素与一个List
scala> 1 :: List(3, 4)
res1: List[Int] = List(1, 3, 4)
注意,::的左边是要加入的元素,不能放到::右边
scala> List(3, 4) :: 1
<console>:12: error: value :: is not a member of Int
List(3, 4) :: 1
^
因为List是不可变的集合,所以无论是::还是:::,操作的结果都是生成了一个新的List,而不是修改原有的List
scala> val list1 = List(1, 2)
list1: List[Int] = List(1, 2)
scala> val list2 = List(3, 4)
list2: List[Int] = List(3, 4)
scala> list1 ::: list2
res0: List[Int] = List(1, 2, 3, 4)
//list1与list2的内容并没有发生改变
scala> println(list1)
List(1, 2)
scala> println(list2)
List(3, 4)