在Scala列表列表中查找组合

ajn*_*ral 0 scala

我有一个List[List[Row]](行是自定义类型,在这里它的定义并不重要)。

我想获得所有可能的方法,可以从每个内部List中选择一个Row,从而结果也为List[List[Row]]

Eas*_*sun 6

scala> def combs[A](xss: List[List[A]]): List[List[A]] = xss match {
     |   case Nil => List(Nil)
     |   case xs::rss => for(x <- xs;cs <- combs(rss)) yield x::cs
     | }
combs: [A](xss: List[List[A]])List[List[A]]

scala> combs(List(List(1, 2), List(4, 5), List(6))) foreach println
List(1, 4, 6)
List(1, 5, 6)
List(2, 4, 6)
List(2, 5, 6)
Run Code Online (Sandbox Code Playgroud)