Scala中::和:::之间的区别是什么

时间:2011-07-04 00:59:56

标签: scala

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。

2 个答案:

答案 0 :(得分:98)

::预先设置单个项目,而:::预先设置完整列表。因此,如果您将List放在::前面,则会将其视为一个项目,从而产生嵌套结构。

答案 1 :(得分:5)

通常:

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

例如:

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 the official site