Scala:理解:::运算符

时间:2014-10-15 05:15:37

标签: scala

list1 ::: list2运算符应用于两个列表是否适用于将list1的所有内容附加到list2

scala> val a = List(1,2,3)
a: List[Int] = List(1, 2, 3)

scala> val b = List(4,5,6)
b: List[Int] = List(4, 5, 6)

scala> a:::b
res0: List[Int] = List(1, 2, 3, 4, 5, 6)

此运营商还有其他用途吗?我在Scala文档中的:::上找不到任何内容,我想知道它的正式名称和用途的范围。

1 个答案:

答案 0 :(得分:8)

是的,它只是列表连接运算符。它们是nil终止的链表,所以从概念上讲它所做的只是取第一个列表的最后一个cons单元格并将其指向第二个列表的头部而不是Nil。

如果您愿意,也可以使用更通用的++运算符而不是:::。最终结果是相同的,但从技术上讲,您正在调用不同的对象。以a:结尾的运算符在Scala中是正确关联的,因此使用++ b与。++(b)或基本上a.append(b)相同而不是::: b是右关联转换为b 。:: :( a)可以读作b.prepend(a)。