在 Clojure 中,diff 函数可以应用于 map ,而在 Scala 中似乎并非如此,是否有人知道 Scala 中的某些东西可以更容易地获取 Clojure diff 函数在应用于 map 时获得的内容?
这是 Clojure diff 函数的解释以供引用。
http://clojuredocs.org/clojure_core/clojure.data/diff
最佳答案
这相当于 Clojure 的 diff
:
import collection.generic.CanBuildFrom
def diff[T, Col](x: Col with TraversableOnce[T], y: Col with TraversableOnce[T])
(implicit cbf: CanBuildFrom[Col, T, Col]): (Col, Col, Col) = {
val xs = x.toSet
val ys = y.toSet
def convert(s: Set[T]) = (cbf(x) ++= s).result
(convert(xs diff ys), convert(ys diff xs), convert(xs intersect ys))
}
它可以对任何类型的
TraversableOnce
进行操作并将返回与其参数类型相同的结果:scala> diff(Map(1 -> 2), Map(1 -> 2))
res35: (scala.collection.immutable.Map[Int,Int], scala.collection.immutable.Map[Int,Int], scala.collection.immutable.Map[Int,Int]) = (Map(),Map(),Map(1 -> 2))
关于scala - Scala 或库中是否存在与 Clojure 的 diff 等价的应用到 map 的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23570523/