2024 年 Clojure 状况调查! 中分享您的想法。

欢迎!有关如何使用本站的更多信息,请参阅 关于 页面。

0
错误
编辑

大家好!我遇到了一个罕见的问题,即我有一组地图和另一组地图,我需要获取这两组之间的差异,如下例所示

 first-sequence: #{{:id "test" :status :up} {:id "other" :status :up}}

second-sequence: #{{:id"test" :status :up} {:id "other" :status :up}}

因此,对于这两个数据集,我执行了以下语句

(seq (map #(produce!
            (adapt-schema %) producer)
          (first (clojure.data/diff first-sequence second-sequence))))

我期望的结果如下

[nil nil #{{:id "test" :status :up} {:id "other" :status :up}]

但在测试中,我从 diff 得到的结果是以下,并且发布错误数量后得到了这个结果

[#{{:id "test" :status :up} {:id "other" :status :up}#{{:id "test" :status :up} {:id "other" :status :up}nil]

但是,例如在 REPL 中,我得到了正确的值,所以我不明白这种行为,任何回复都会对我非常有帮助。谢谢!

1 答案

0

问题解决了,我的问题是,我从 datomic 获取数据,所以我需要将其强制转换为模式,然后使用这个结果集进行 diff。

(->> all-results
         map #(schema/coerce! % models.schema/Result))
         set)
...