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,你可能还有其他问题。 ;)

是的,这个 bug 项确实需要一个更深入的检查,以确定它影响了哪些内容。在这种情况下,我认为如果计数 <= 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 提出)
...