评论由:carocad 发布
当然,在库内部无法修复"contains?"行为。但是这个工单是关于将短暂集合用作函数的。(见描述示例)
当将集合用于函数时,Clojure 的暂时性集合允许查找键。然而,data.int-map 的内部实现每次被作为函数调用时都使用 "contains?"。因此,打破了集合的预期行为。
Clojure 处理这种情况是通过在将集合用作函数时调用 "get" 函数:[链接](https://github.com/clojure/clojure/blob/master/src/jvm/clojure/lang/APersistentSet.java#L50)。因此,永远不会触发 "contains?" 调用。
当前 int-map 集合的行为迫使用户判断使用哪种类型的集合,这样就可以调用正确的函数。