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

欢迎!请参阅关于页面,了解更多关于如何使用此页面的信息。

0
Clojure

目前 count() 返回的是 int - 应将其提升为 long。

当 long 溢出时,count() 应抛出 ArithmeticException。也请参阅 CLJ-1229。

4 答案

0

评论由:slipset 发布

查看此问题,有些类似问题如
clojure.lang.RT#toArray 中的第 1658 行
根据集合的计数创建一个新的 Object 数组。
似乎 new Object(link: ) 需要一个 int 参数,因此在这种情况下需要将 long 强制转换为 int。

0

评论由:alexmiller 发布

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

是的,这个工单绝对需要更彻底的分析,看看有什么影响。在这种情况下,我认为如果计数 ≤ Integer/MAX_VALUE,则应该继续执行,否则应抛出异常。

0

评论由:slipset 发布

这也会在 java.util.Collection 大小方面引起问题
clojure.lang.APersistentSet#size 中的第 164 行
其中大小由

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

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