[英]What is better? foreach and update map vs use list.map
以下哪个更好,为什么?
情况1:
Map[String, String] result = Map.empty[String,String]
inputList.foreach(i => result += (i -> "hi") )
案例二:
inputList.map(i => (i , "hi")).toMap
哪个最好实际上是用例的问题。 如果这是一个管道,我将传递/转换数据并将List[String]
转换为Map[String, String]
只是其中的一部分,我更愿意将.map
与.toMap
一起使用,因为它使阅读、维护和理解更容易
something.
.map(someMap)
.filter(condition)
.map(i => i -> "hi")
.toMap
.mapValues(something)
...
但是,如果这用于框架的某些部分,而不是Future
或IO
使用回调,并且我获得结果的唯一方法是将其附加到某些东西, .foreach
将是我会考虑的选项之一
val mutableMap = mutable.Map.empty[String,String]
someSadLibrary.onComplete { result =>
result.foreach { value =>
mutableMap += ...
}
}
如果代码在一个非常热门的路径上,我可能会采用一些不可变的输入,然后使用可变结构来构建结果并最终返回不可变的结果。 这也需要.foreach
和突变(我几乎从来没有在我的代码中看到这样做的理由,更像是在库内部)。
长话短说, .map(...).toMap
几乎总是更好,但在某些特定情况下,我会考虑突变。
案例二
这是实现它的功能性方式,并且更清楚代码实际在做什么。 如果您担心性能,那么使用view
会提供与案例 1 几乎相同的代码,但同样更清晰。
对于 state 来说,显而易见的是,如果情况 2 不可能,则使用情况 1。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.