scala - Scala的语义可遍历,可迭代,序列,流和 View ?

标签 scala scala-collections

还有其他问题,例如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/

相关文章:

scala - 如何将 Option[X] 的 Scala 集合转换为 X 的集合

scala - 如何将 Java LinkedHashMap 转换为 Scala LinkedHashMap?

scala - 在 Scala 中对数组进行就地排序

scala 列表读取给定字符串的值

scala - Scala流库的差异( react 流/Iteratee/RxScala/Scalaz…)

java - 在 Java Controller (PlayFramework) 中执行 Scala Action

mysql - Slick:如何从 MySQL 读取 Blob?

testing - 是否有任何工具可以对 Scala 代码进行静态分析?

Scala:使用 Array[Double] 中的初始值是否安全?

Scala:为什么我的 Scala Test 自定义匹配器无法编译?