我正在解决99 个 Scala 问题,并且在#27 - Group Elements of a Set into Disjoint Subsets上遇到了障碍。我已经编写了一个可以完成所有工作的辅助函数,唯一的问题是我得到了type mismatch error。这是功能:
def addGroupN[T](gs: List[List[List[T]]], n: Int): List[List[List[T]]] = {
gs.flatMap(xss => combinations(n, list diff xss.flatten).map(xs => xss :+ xs))
}
list
is 类型和List[T]
函数combinations
返回 a List[List[T]]
。编译器正在计算将其键入为List[List[List[Any]]]
,因此与签名不匹配。
我不太关心风格/惯用语建议,而是更好地掌握如何正确推理类型评估。除了回答如何正确地编写它以匹配正确的签名之外,指示当前形式的此函数如何返回除 a 以外的任何List[List[List[T]]]
内容的内容也会有所帮助。
编辑:
的完整签名combinations
是
def combinations[T](n: Int, list: List[T]): List[List[T]]