将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文档中的:::
上找不到任何内容,我想知道它的正式名称和用途的范围。
答案 0 :(得分:8)
是的,它只是列表连接运算符。它们是nil终止的链表,所以从概念上讲它所做的只是取第一个列表的最后一个cons单元格并将其指向第二个列表的头部而不是Nil。
如果您愿意,也可以使用更通用的++运算符而不是:::。最终结果是相同的,但从技术上讲,您正在调用不同的对象。以a:结尾的运算符在Scala中是正确关联的,因此使用++ b与。++(b)或基本上a.append(b)相同而不是::: b是右关联转换为b 。:: :( a)可以读作b.prepend(a)。