如果我想将以下方法推广到支持所有必要操作的所有集合类型(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
}
}
答案 0 :(得分:2)
如果您只想对支持:+
的集合使用此功能,最简单的方法就是根据Seq
而不是List
来定义它。
Traversable
。我很乐意解释说,当我有更多的时间在我的手上,但它往往会在那个级别变得复杂。
Scalaz applicative functors可能是要走的路,但我会让那些Scalaz经验比我处理那个特定答案的人更多。