2024年Clojure调查 中分享您的想法!

欢迎!请参阅关于 页面以了解有关如何操作的更多信息。

0
Clojure

目前count()返回int类型 - 应将其升级为long类型。

在long类型溢出时,count()应抛出ArithmeticException异常。另见CLJ-1229。

4 个答案

0

评论人:slipset

在此查看,存在问题,如同在
clojure.lang.RT#toArray行1658
你根据集合的计数创建新的Object数组。
似乎new Object()需要一个int类型的参数,所以需要将long类型转换为int类型才能使它起作用。

0

评论人:alexmiller

如果您创建的Object()大于2147483647,可能存在其他问题。 ;)

但是,是的,这个工单确实需要对受影响的内容进行更彻底的分析。在此情况下,我认为如果计数小于等于Integer/MAX_VALUE,则应继续执行,否则应抛出异常。

0

评论人:slipset

嗯,这也可能导致关于java.util.Collection size的问题
clojure.lang.APersistentSet#size行164
其中size由指定

http://docs.oracle.com/javase/7/docs/api/java/util/Collection.html#size()

0
参考: https://clojure.atlassian.net/browse/CLJ-1729 (由alexmiller报告)
...