当我开始编写 Scala 时,我确实有一个很大的疑问。我想知道map
scala 中的方法是如何工作的。无论是顺序处理还是多线程处理?更重要的是,我想知道为什么map
方法比while
or更快foreach
?
val list = List(1,2,3,45,12)
list.map(x => x)
list.foreach(x => println(x))
当我开始编写 Scala 时,我确实有一个很大的疑问。我想知道map
scala 中的方法是如何工作的。无论是顺序处理还是多线程处理?更重要的是,我想知道为什么map
方法比while
or更快foreach
?
val list = List(1,2,3,45,12)
list.map(x => x)
list.foreach(x => println(x))
首先,这两种操作是无限不同的。map
是给定函数的列表的转换A => B
,而foreach
产量Unit
和通常用于副作用。
我猜想这foreach
在执行所需的周期方面“更快”,与map
作为函数的结果创建一个新集合(在这种情况下)相比。但是比较这两者实际上是比较苹果和橘子。
map
仅当调用它的集合是并行集合时才会并行。所以在你的例子中:
list.map(x => x)
不是并行的并且是顺序的,但是
list.par.map(x => x)
将是平行的。显然,这种用法需要考虑各种警告。同一个并行集合也有一个foreach
方法。