在 Scala 中追加列表的匹配值

Append matched value of list in scala

如何附加此列表:

val aList = List(List(8),List(7),List(6),List(4),List(9))

基于:

val aUpdate = List(8,7,4,2,9)

输出应该是:

val aList = List(List(8,8), List(7,7),List(6),List(4),List(9,9))

我原以为下面的代码可以工作:

val aList = for (i <- 1 to 4) aList map (_(i)) {
case if aList map (_(i)) contains aUpdate(i) => ++ List(map.aUpdate(i))

谁能告诉我输出的有效参数是什么?并请详细解释它是如何工作的。

您的代码实际上无效。缺少一些东西,例如 case 之后的模式标识符、串联之前的列表值、右括号等。

这是一种方法:

val r = (aList zip aUpdate).map {
  case (list, update) if (list.contains(update)) => update :: list
  case (list, update) => list
}

// result: List(List(8, 8), List(7, 7), List(6), List(4), List(9, 9))

将一个列表与另一个列表压缩成对列表,其中第 n 对由第一个列表中的第 n 个元素和第二个列表中的第 n 个元素组成。现在你可以轻松地做你想做的事;如果来自 aList 的元素包含来自 aUpdate 的元素,则将其添加到列表中,否则(注意第二种情况具有相同的标识符,但没有条件)只是 return 元素来自 aList.