在Clojure中,assocEx的作用是什么?

djhaskin987

我正在实现一个自定义数据结构,出于所有目的和目的,它是一个排序的映射。我想这么程序,我可以使用所有Clojure的抽象的,当涉及到地图,如assoccount等。为了做到这一点,我需要Clojure的扩展clojure.lang.IPersistentMap协议,我的新的有序映射类型。

我的问题是:assocEx什么或目的是什么?在普通Clojure映射上调用它表明,它与以下不同之处在于,assoc如果您尝试在映射中已存在键的情况下插入键/值对,则会引发异常:

user> (.assocEx (cast clojure.lang.IPersistentMap {:a :b}) :a 1)
RuntimeException Key already present  clojure.lang.Util.runtimeException (Util.java:219)

这与有所不同assoc,后者只是将地图中的旧值替换为新值:

user> (.assoc (cast clojure.lang.IPersistentMap {:a :b}) :a 1)
{:a 1}

但是我似乎找不到找到显示此功能的“ clojure”功能(上面未使用互操作表单/ cast的功能)。使用正常的clojure抽象功能,我们在哪里可以看到此功能的效果assoc

合金

assocEx不再使用了。这是较早时期的残余。如果您要编写自己的地图类型,则可以实现(assocEx [m k v] (throw (Exception.)))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章