w12*_*220 3 functional-programming scala
我在嵌套的for循环和正确使用yield时遇到了麻烦。
问题是如果我有两个列表,形式为List [(Int,Int)]
val ls = (1,5)::(3,2)::(5,3)::Nil
val ls_two = (1,9)::(5,9)::(6,7)::Nil
Run Code Online (Sandbox Code Playgroud)
现在我想创建仅将键和所有列表的第二个int结合在一起的第三个列表,这样结果将是
val result = (1,5,9)::(5,3,9)::Nil
Run Code Online (Sandbox Code Playgroud)
我已经尝试过一些类似的变体,但似乎都没有用
val result = for(i <- ls) {
for(j <- ls_two) {
if(i._1 == j._1) yield (i._1,i._2,j._2)
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试将yield放置在for循环的末尾,如果我用println替换yield,这似乎可行,但是我不确定如何用yield。
另外,如果您有更实用的方法来解决此问题,将不胜感激,谢谢!
这里推荐的方法根本不是“嵌套”“循环”-而是创建一个使用“后卫”的理解力:
val result = for {
i <- ls
j <- ls_two if i._1 == j._1
} yield (i._1,i._2,j._2)
Run Code Online (Sandbox Code Playgroud)