来自https://github.com/clj-kondo/clj-kondo/issues/1258
特例函数中的有些函数(特别是`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!`(以及可能是其他特例函数)似乎在不需要处理返回类型时工作,但这可能只是一个实现细节,因此那里也可能需要警告。