来自https://github.com/clj-kondo/clj-kondo/issues/1258
在transients的某些函数上,特别是`assoc!`,即使不处理返回类型也似乎可以正常工作
user> (let [t (transient {})]
(assoc! t :foo :bar)
(persistent! t))
;; => {:foo :bar}
user>
当映射中的条目超过8条时,这会导致崩溃
user> (let [t (transient {})]
(doseq [i (range 10)]
(assoc! t (str i) i))
(persistent! t))
;; => {"0" 0, "1" 1, "2" 2, "3" 3, "4" 4, "5" 5, "6" 6, "7" 7}
user>
这种现象似乎偶尔会影响初学者和资深的Clojure程序员
因此,可能值得在文档字符串中添加一个注意事项
尽管`conj!`(以及可能的其他transient上的函数)似乎可以不处理返回类型就工作,但这可能只是实现细节,因此可能也应该在那里设置一个警告