scala .seq 与 .toSeq

标签 scala collections seq

在 Scala 文档中,集契约(Contract)时定义了 .seq 和 .toSeq 方法。它们之间有什么区别,为什么它们都存在?我无法通过阅读 Scala 集合文档来弄清楚。

最佳答案

假设我有一个并行集合:

val myParList = List(1, 2, 3, 4).par

现在操作如 map在这个集合上将并行运行。通常这很好,因为这意味着事情完成得更快,但有时您确实需要对元素执行某种副作用操作,然后并行运行可能会导致问题:
scala> myParList.foreach(println)
1
4
3
2
.seq允许您通过要求操作按顺序运行来解决此问题(无需复制集合的内容):
scala> myParList.seq.foreach(println)
1
2
3
4

实际上,它只是撤消了 .par . .toSeq不提供相同的保证,通常它只对 GenTraversableOnce 的子类有用。还没有的 Seq s。

关于scala .seq 与 .toSeq,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26305643/

相关文章:

postgresql - jooq 无法在游戏中生成类 - scala

scala - 在 scala 中漂亮地打印嵌套 Map

Scala:获取 Map.head 元素的键(和值)

java - 将整个映射转换/展平为列表的最有效方法(键和值在一起,而不是分开)

assign - seq 赋值会创建一个新的 seq 副本吗?

json - 如何使用Play with Scala加载JSON文件

scala - 如何在 Scala 中模拟依赖类型

php - Laravel 集合 - 仅当集合包含值时才回显值

Python递归调用不执行代码 - 3个序列的子序列的最长公共(public)

arrays - 将数组切片为 seq,不进行复制