我有List[List[Row]]
(行是自定义类型,它的定义在这里并不重要)。
我想获得所有可能的方法,我可以从每个内部列表中选择一行,以便结果也是List[List[Row]]
。
答案 0 :(得分:4)
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)