Scala迭代两个序列并附加到列表中

时间:2014-02-04 06:57:03

标签: scala mapping

我有以下方法签名,旨在组合来自两个不同序列的元素:

def newMap(local: Seq[String], passed: Seq[(String, Int)]): Map[String, Int] = {


}

在这种情况下,来自值local的字符串应该是默认值0的键。是否可以使用for-comprehension同时循环这两个序列,条件是添加默认值0对于地图中的第一个序列?我也试图在这里不使用可变变量。

1 个答案:

答案 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