它们做的事情是相同的,除了++
可以与任何Traversable
一起使用,而:::
只能用于列表。另外,以:
结尾的方法是在右侧对象上调用的,因此:::
的参数是前缀,而++
的参数是后缀。
scala> val l = List(1,2,3)
l: List[Int] = List(1, 2, 3)
scala> val l2 = List(4,5,6)
l2: List[Int] = List(4, 5, 6)
scala> l ++ l2
res0: List[Int] = List(1, 2, 3, 4, 5, 6)
scala> l ::: l2
res1: List[Int] = List(1, 2, 3, 4, 5, 6)
scala> import scala.collection.mutable.LinkedList
import scala.collection.mutable.LinkedList
scala> val ll = LinkedList(1,2,3)
ll: scala.collection.mutable.LinkedList[Int] = LinkedList(1, 2, 3)
scala> ll ++ l2
res2: scala.collection.mutable.LinkedList[Int] = LinkedList(1, 2, 3, 4, 5, 6)
scala> ll ::: l2
<console>:11: error: type mismatch;
found : scala.collection.mutable.LinkedList[Int]
required: List[?]
ll ::: l2
@lukas,这篇文章也许对你有用。如何解释Scala API中List的:::方法? 其他人对那篇文章中的问题给出的答案(我的问题)帮助我理解了:::方法的作用,尽管它没有与++方法进行对比。但我认为包含这个信息可能会有所帮助。