还有其他问题,例如Scala: What is the difference between Traversable and Iterable traits in Scala collections?和How would I get the sum of squares of two Lists in Scala?可以部分回答该问题。我觉得一个问题可以解决所有这些问题。
最佳答案
可遍历是集合层次结构的顶部。它的主要方法是“foreach”,因此它可以对集合的每个元素进行处理。
可迭代的可以创建一个Iterator,基于它可以实现foreach。这定义了元素的某些顺序,尽管该顺序可能会针对每个Iterator更改。
Seq (uence)是一个Iterable,其中元素的顺序是固定的。因此,谈论元素的索引是有意义的。
流是惰性序列。即流的元素在访问之前可能无法计算。这样就可以处理无限整数序列,例如所有整数的序列。
View 是集合的非严格版本。诸如filter和view on map之类的方法仅在访问各个元素时才执行传递的函数。因此,庞大集合上的 map 会立即返回,因为它只是围绕原始集合创建了包装器。仅当访问元素时,映射才会实际执行(针对该元素)。请注意,View不是一个类,但是对于各种集合,有很多XxxView类。
关于scala - Scala的语义可遍历,可迭代,序列,流和 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8569489/