如果我想将以下方法推广到支持所有必要操作的所有集合类型(foldLeft,flatMap,map和:),那么我该怎么做呢?目前它只适用于列表.
码:
def join[A](lists: List[List[A]]): List[List[A]] = {
lists.foldLeft(List(List[A]())) { case (acc, cur) =>
for {
a <- acc
c <- cur
} yield a :+ c
}
}
最佳答案 如果您只想要支持:的集合,最简单的方法就是用Seq而不是List来定义它.
通过使用构建器,您可以使它更加通用,一直到Traversable.我很乐意解释说,当我有更多的时间在我的手上,但它往往在那个级别变得复杂.
Scalaz applicative functor可能是要走的路,但我会让拥有更多Scalaz经验的人比我处理那个特定的答案.