gpt4 book ai didi

scala - Traversable 是一个特征还是一个类

转载 作者:行者123 更新时间:2023-12-01 09:40:37 27 4
gpt4 key购买 nike

问题 1 -

在Scala文档中,我发现Traversable是一个带有抽象方法foreach的trait:

http://www.scala-lang.org/docu/files/collections-api/collections.html

那我为什么要实例化一个Traversable类型的对象呢?

val t = Traversable(1,2,3)

t.foreach(println _) //where is Scala picking foreach a definition from?

问题 2 - Traversable 与 List 或 Array 等其他类有何不同?它属于 Seq、Set 还是 Map 类别(我认为其他集合继承自 Traversable)

问题 3 - 我可以对 Iterable 特性做完全相同的事情,尽管根据文档,Iterable 有一个抽象方法,iterator:

val v1 = Iterator(1,2,3)

v1.foreach( println _)

我错过了什么?

最佳答案

问题 1:当您执行 Traversable(1,2,3) 时,您实际上是在 Traversable 的伴生对象上调用 apply 方法 特征。此方法实际上使用您提供的元素创建了一个 List(List extends Traversable)。因此,您调用的 foreach 方法实际上是 Listforeach 方法。

问题 2:是的,Traversable 是 Scala 中集合层次结构顶部的特征。 ListArray 是一些具体集合的实际示例,而 Traversable 是许多集合实现的一般特征。

问题3:IterableIterator不是一回事。您似乎在问题中混淆了它们。 Iterable(1,2,3) 做的事情与 Traversable(1,2,3) 完全相同。它调用 Iterable 的伴随对象的 apply 方法,并为您提供一个 ListIterator(1,2,3) 但是,调用 Iterator 上的 apply 方法,并为您提供一个新的 Iterator 遍历 3 个数字。

关于scala - Traversable 是一个特征还是一个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40872134/

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