应用于向量的Clojure assoc
似乎具有不一致的行为
当向量中存在索引时,assoc替换值
(assoc [1 2 3 4 5] 3 42) => [1 2 3 42 5]
当索引与最后一个相邻时,向量增长(conj
等效)
(assoc [1 2 3 4 5] 5 42) => [1 2 3 4 5 42])
否则抛出IndexOutOfBoundsExcpetion
虽然在reduce assoc
等某些情况下很有用,但这可能会导致程序中的细微错误
对于vector而言,它是预期的行为还是可能是关联的bug?
答案 0 :(得分:2)
预计。请参阅assoc
的文档字符串,尤其是关于index
参数的最后一个注释。
这在p的顶部描述。 101 Clojure Programming 。