assoc
可能抛出IndexOutOfBoundsException,如:
user=> (assoc [] 1 nil)
IndexOutOfBoundsException clojure.lang.PersistentVector.assocN(PersistentVector.java:137)
如果我尝试在索引0处设置值,为什么不会抛出相同的异常?
user=> (assoc [] 0 nil)
[nil]
在我看来,在这两种情况下,索引都超出了界限......
由于
答案 0 :(得分:3)
Assoc-in使用assoc来修改所提供键的元素(在您的情况下为索引)。 Assoc-in(和assoc)尝试创建所需的键(或索引)。
关于向量的特殊处理在assoc docstring中提到:
当应用于矢量时,返回一个新的矢量 包含索引的val。 注意 - 索引必须是< =(计数向量)。
更新:只是为了澄清:缺少的异常是一致的,因为0是空向量中新元素的有效索引,1不是。