【问题标题】:What's the difference between :: and ::: in ScalaScala 中 :: 和 ::: 有什么区别
【发布时间】:2011-07-04 00:59:56
【问题描述】:
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。

【问题讨论】:

    标签: scala


    【解决方案1】:

    :: 前置单个项目,而 ::: 前置一个完整列表。所以,如果你在:: 前面加上一个List,它会被当作一个项目,这会产生一个嵌套结构。

    【讨论】:

    • 出于性能原因,::::: 之间有区别吗?
    • 性能应为O(n)n 是要添加的元素数。
    • 如果我错了,请纠正我,但这个操作不是追加而不是前置吗?
    • 举个例子会更容易理解
    【解决方案2】:

    一般:

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

    例如:

    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

    【讨论】:

      猜你喜欢
      • 2011-12-06
      • 2011-12-02
      • 2017-05-29
      • 2020-07-20
      • 2012-01-08
      • 2020-05-24
      • 2010-11-19
      • 2017-10-10
      • 1970-01-01
      相关资源
      最近更新 更多