当索引超出范围时,assoc 可能会抛出 IndexOutOfBoundsException,如下所示:

user=> (assoc [] 1 nil)
IndexOutOfBoundsException   clojure.lang.PersistentVector.assocN(PersistentVector.java:137)

如果我尝试将值设置为索引 0,为什么它不会抛出相同的异常?
user=> (assoc [] 0 nil)
[nil]

在我看来,在这两种情况下,索引都超出了范围......

谢谢

最佳答案

Assoc-in 使用 assoc 修改提供的键(在您的情况下为索引)处的元素。关联(和关联)尝试创建您需要的键(或索引)。

在 assoc 文档字符串中提到了对 vector 的特殊处理:



更新: 只是为了澄清:缺少的异常是一致的,因为虽然 0 是空 vector 中新元素的有效索引,但 1 不是。

关于java - 关联行为是否不一致?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16506733/

10-10 04:45