Scala集合层次结构



我看到一张照片,上面显示了Scala中的Collections Hierarchy。

看起来在层次结构的顶部有Traversable Trait,再往下一步是Iterable Trait,它有迭代器()函数,接下来是List和Array。。。

创建一个简单的List对象并尝试对其调用迭代器()时抛出一个错误,表明它不是List的一部分。

现在,我知道我可以获得列表的Iterable表示,然后用Iterator对其进行迭代,但我的问题更多的是了解它是如何工作的:list类不应该获得迭代器()函数吗?因为Iterator在同一层次结构中更高?

我是从一个Java开发人员的角度来看待我的问题。

谢谢。

List[A],正如您所说,是Iterable[A],因此它有一个iterator方法(不带括号),可以调用该方法来获得列表元素的迭代器:

val it: Iterator[Int] = List(1, 2, 3).iterator

如果你用括号iterator()来调用它,它就不起作用了,因为迭代器方法是在GenIterableLike特性中定义的,没有括号:

trait GenIterableLike[+A, +Repr] extends Any with GenTraversableLike[A, Repr] {
  def iterator: Iterator[A]
...

您可以在这里阅读scala中的方法调用Arity-0方法可以定义为带括号或不带括号,但如果选择后者(def m = {}),则不能这样调用它们:m()

最新更新