2024 Clojure状态调查!中分享您的想法。

欢迎!请参阅关于页面以了解工作原理的更多信息。

+1
文档

来自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!`(以及可能是其他特例函数)似乎在不需要处理返回类型时工作,但这可能只是一个实现细节,因此那里也可能需要警告。

1 个答案

0

被选中
 
最佳答案

这已经在https://clojure.atlassian.net/browse/CLJ-1385中记录(我想它一直等待我提供一个更好的消息,如我所见)。

...