由:carocad 评论
当然,"contains?" 的行为不能在这个库内部修复。然而,这个问题是关于将临时集合用作函数的。(请参阅描述示例)
Clojure的transient集合在用作函数时允许查找键。然而,data.int-map在作为函数被调用时内部使用"contains?"。因此,打破了集合的预期行为。
Clojure通过在集合用作函数时调用"get"函数来处理这种情况:[查看源码](https://github.com/clojure/clojure/blob/master/src/jvm/clojure/lang/APersistentSet.java#L50)。因此,永远不会分派对"contains?"的调用。
当前int-map集合的行为迫使用户区分使用哪种集合类型,以便调用正确的函数。