如果嵌套嵌套循环后的收益

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。

另外,如果您有更实用的方法来解决此问题,将不胜感激,谢谢!

Tza*_*har 5

这里推荐的方法根本不是“嵌套”“循环”-而是创建一个使用“后卫”的理解力:

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)