我正在尝试对具有相同字符的对的值求和,但在打印时,我得到List((),())
这是我的代码
var lstA = List(("a",1),("b",2))
var lstB = List(("a",3), ("b",4))
val k = lstA.map(a => lstB.foreach(b => {
if(b._1 == a._1) (a._1, a._2+b._2) else a
}))
println(k)
当然有更好的方法可以做到这一点,但我只是想知道为什么这不起作用。
在调试和评估行if(b._1 == a._1) (a._1, a._2+b._2) else a
时,我按预期获得对的值,但是当打印列表k
为空时
答案 0 :(得分:2)
简短且不完全准确的答案是因为foreach
没有返回任何内容。实际上,它 会返回一些东西。这是signature:
def foreach[U](f: (A) ⇒ U): Unit
它返回Unit
类型,用作该函数具有副作用的信号。从文档中,f
参数是:
将其副作用应用于每个元素的函数。该 函数f的结果被丢弃。
因此预计该功能会产生副作用。这可能类似于println
。