为什么assoc
的返回类型有差异和 dissoc
在 Clojure 中,他们的论点何时被记录?我的意思是 assoc
'ing 一个不存在的键仍然返回一条记录,但 dissoc
'ing 一个现有的键返回一个映射。
但是,从某种意义上说,两者都应该生成 map 或记录,但不会表现出不同的行为。这种不同的原因是什么?
最佳答案
记录实例保证包含在记录定义中声明的所有字段。
从实例中删除声明的字段时,将违反此保证。因此返回 map 。
显然,它们不能保证排除所有未在记录定义中声明的字段,因此可以将新字段添加到实例中。
关于clojure - Clojure 记录上的关联和分离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31210238/