Bra*_*erg 2 scala scala-collections
也就是说,我正在寻找一个标准或准标准(Apache Commons,Guava等)库函数,它将有效地生成:
def f[T](oldSet: Set[T], newSet: Set[T]): (Set[T], Set[T], Set[T]) = {
val removed = oldSet.diff(newSet)
val kept = oldSet.intersect(newSet)
val added = newSet.diff(oldSet)
(removed, kept, added)
}
Run Code Online (Sandbox Code Playgroud)
显然这并不难写,而且我确信我可以毫不费力地做出或多或少的最佳实现,但对于我来说,对此的需求经常出现,我感到困惑,似乎没有要做一个众所周知的图书馆功能.我错过了什么,还是真的不存在?
编辑:对于那些指向Scala的标准交叉和差异函数及其运算符等价的人,我很欣赏这个想法,但我已经知道了这些,因为你可以从我在上面的例子中使用它们的事实中看到.我正在寻找一个标准库函数,它在函数上等效于上面定义的函数f()并且效率更高.
Scala标准库中没有这样的功能.但这样做"艰难的"只比"高效的方式"慢两倍,所以我建议不要担心它.
(a partition b可用于生产(a & b, a diff b).)