我有以下方法签名,旨在组合来自两个不同序列的元素:
def newMap(local: Seq[String], passed: Seq[(String, Int)]): Map[String, Int] = {
}
在这种情况下,来自值local的字符串应该是默认值0的键。是否可以使用for-comprehension同时循环这两个序列,条件是添加默认值0对于地图中的第一个序列?我也试图在这里不使用可变变量。
答案 0 :(得分:6)
def newMap(local: Seq[String], passed: Seq[(String, Int)]): Map[String, Int] =
(local.view.map((_, 0)) ++ passed.view).toMap
在上面的代码view
中,我们首先将输入集合转换为它们的延迟包装器,而不是立即执行以下所有操作来累积它们,只在强制进入某些严格版本时才执行它们。这使我们能够在一次遍历中执行所有操作(map
,++
,toMap
)。最后的toMap
强制我们懒惰的对集合成严格的Map
。