繁体   English   中英

assoc行为是否不一致?

[英]Is assoc behavior inconsistent?

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

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

如果我尝试在索引0处设置值,为什么不会抛出相同的异常呢?

user=> (assoc [] 0 nil)
[nil]

在我看来,在这两种情况下,指数都超出界限......

谢谢

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

关联向量的特殊处理在assoc docstring中提到:

应用于向量时,返回包含val的索引的新向量。 注 - 索引必须是<=(计数向量)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM