在 Scala 中生成已知数量的列表的组合非常简单。您可以使用理解:
for {
elem1 <- list1
elem2 <- list2 } yield List(elem1, elem2)
或者您可以使用脱糖版本:
list1.flatMap( elem1 => list2.map(elem2 => List(elem1,elem2)))
在套件之后,我想从 N 个列表中创建元素的组合(N 在运行时是已知的)。按照组合器示例,3 个列表将是:
list1.flatMap( elem1 => list2.flatMap(elem2 => list3.map(elem3 => List(elem1,elem2,elem3)))
所以我看到了这个模式,我知道那里有一个递归,但我一直在努力把它固定下来。
def combinations[T](lists:List[List[T]]): List[List[T]] = ???
有任何想法吗?