我遇到嵌套for循环和正确使用yield的问题。
问题是我有两个表单List [(Int,Int)]
的列表val ls = (1,5)::(3,2)::(5,3)::Nil
val ls_two = (1,9)::(5,9)::(6,7)::Nil
现在我想创建第三个列表,只将组合键和所有列表的第二个int组合在一起,结果将是
val result = (1,5,9)::(5,3,9)::Nil
我尝试了一些像这样似乎无法正常工作的变体
val result = for(i <- ls) {
for(j <- ls_two) {
if(i._1 == j._1) yield (i._1,i._2,j._2)
}
}
我已尝试将收益率放在for循环的末尾,如果我用println替换收益率似乎有效,但我不确定如何用收益率来做。
此外,如果你有一个更实用的方法来解决这个问题,非常感谢,谢谢!
答案 0 :(得分:5)
这里推荐的方法不是“嵌套”“循环” - 而是创建一个使用“后卫”的单一理解:
val result = for {
i <- ls
j <- ls_two if i._1 == j._1
} yield (i._1,i._2,j._2)