缺少 Scala 集合中的 par 方法

lan*_*gaz 6 parallel-processing scala scala-collections scala-2.13

我试图在 Intellij 中将顺序列表转换为并行列表,但出现错误

无法解析符号par

.par方法调用上:

import scala.collection.parallel.immutable._
...
val parList = List(1,2,3).par
Run Code Online (Sandbox Code Playgroud)

根据https://docs.scala-lang.org/overviews/parallel-collections/overview.html,必须简单地

在顺序集合列表上调用 par 方法。之后,人们可以像通常使用顺序收集一样使用并行收集。

令我疑惑的是,我par在scala的当前不可变列表api中没有找到任何方法:https : //www.scala-lang.org/api/current/scala/collection/immutable/List.html

但甚至还有一个专用的 scala doc-page 用于顺序到并行转换,它使用该par方法:https : //docs.scala-lang.org/overviews/parallel-collections/conversions.html

关于我的设置

我在 Arch Linux 上,OpenJDK 10 设置为语言级别 9(在 Intellij 中)和 scala-sdk-2.13.0。

导入的库依赖:

  • scala-library (2.13.0)
  • scala-parallel-collections (2.13.0)

lan*_*gaz 10

正如@Thilo 在评论中提到的,我缺少以下自 Scala 2.13 以来必需的导入:

import scala.collection.parallel.CollectionConverters._

来源:https : //github.com/scala/scala-parallel-collections/issues/22


小智 5

除了进口:

import scala.collection.parallel.CollectionConverters._ 
Run Code Online (Sandbox Code Playgroud)

您还需要在 Maven 项目的 pom.xml 中添加依赖项:

<dependency>
        <groupId>org.scala-lang.modules</groupId>
        <artifactId>scala-parallel-collections_2.13</artifactId>
        <version>0.2.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)