Scala中::和:::有什么区别


82
val list1 = List(1,2)
val list2 = List(3,4)

然后

list1::list2 returns:

List[Any] = List(List(1, 2), 3, 4)

list1:::list2 returns:

List[Int] = List(1, 2, 3, 4)

我看到这本书写道,使用::时也会产生效果List[Int] = List(1, 2, 3, 4)。我的Scala版本是2.9。

Answers:


115

::只准备一个项目,而准备:::一个完整列表。因此,如果List在其前面放一个,::它将被视为一项,从而导致嵌套结构。


出于性能原因,::和之间有区别:::吗?
空值

2
性能应O(n)n要添加的元素数量相同。
Debilski 2015年

如果我错了,请纠正我,但是此操作不是附加操作而不是前置操作吗?
Janac Meena

一个示例将使其更容易理解
techkuz

18

一般来说:

  • :: -在列表的开头添加元素,并返回包含添加的元素的列表
  • ::: -连接两个列表并返回连接的列表

例如:

1 :: List(2, 3)             will return     List(1, 2, 3)
List(1, 2) ::: List(3, 4)   will return     List(1, 2, 3, 4)

在您的特定问题中,使用::会导致列表(嵌套列表)中的列表,因此我相信您更喜欢使用:::

参考:class List int官方网站

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.