gpt4 book ai didi

scala - 用于连接列表的::: 和++ 之间的区别

转载 作者:行者123 更新时间:2023-12-04 21:58:46 27 4
gpt4 key购买 nike

这个问题在这里已经有了答案:




8年前关闭。




Possible Duplicate:
Scala list concatenation, ::: vs ++



在 Scala 中,假设我有两个列表
scala> val oneTwo = List(1,2)
oneTwo: List[Int] = List(1, 2)


scala> val threeFour = List(3,4)
threeFour: List[Int] = List(3, 4)

我可以通过执行以下操作来连接列表:
scala> oneTwo ::: threeFour
res30: List[Int] = List(1, 2, 3, 4)

或者
scala> oneTwo ++ threeFour
res31: List[Int] = List(1, 2, 3, 4)

两种方法有什么区别?

谢谢。

最佳答案

:::方法特定于 List , 而 ++是任何 Traversable 的一部分.

差异源于两件事。一、List是原始 Scala 集合之一,在编译器中大量使用,并经过特殊优化。 ::串联与 ML 系列语言中使用的相同,这是 Scala 的一大灵感来源,以及 :::从中推断。

另一方面,++随着 Scala 2.8.0 对 Scala 集合的重新设计,方法和继承变得统一。我认为它在此之前就存在(例如在 Set 上),但是集合没有共享一个共同的父类(super class),因此它基本上是其他集合的临时方法。

在性能方面,:::应该比++ ,但可能不显着。

关于scala - 用于连接列表的::: 和++ 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14388841/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com