以下哪个更好,为什么?
案例1:
Map[String, String] result = Map.empty[String,String]
inputList.foreach(i => result += (i -> "hi") )
案例2:
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
总是会[[几乎更好,但是在某些特定情况中,我不会考虑选择变异。