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

欢迎!请访问关于页面,了解更多关于它是如何工作的信息。

0
Clojure

这应该按预期工作,例如

{{(Integer. 1N)}}

可能适用于{{BigInt}}、{{BigInteger}}和{{BigDecimal}}。

按照Rich在irc中的说法,查看的方法是{{c.l.Reflector.paramArgTypeMatch}}。

11 个答案

0

评论者:trptcolin

关于这如何影响位左移的clojure-dev列表中的问题:http://groups.google.com/group/clojure-dev/browse_thread/thread/2191cbf0048d8ca6

0

评论者:ataggart

CLJ-445补丁也修复了这个问题。

0

评论者:trptcolin

这个补丁在位左移BigInt时失败:(bit-shift-left 1N 10000)。原因是补丁更改了(BigInt, Long)的派发从(Object, Object)变为(long, int)。

显然,不能应用这个补丁(除非其他更改使其可行),但我将其作为对话的开端。

0

评论者:ataggart

我在邮件列表中的评论

如果测试失败,可能意味着Numbers.shiftLeft(long,int)被
选用了,而不是Numbers.shiftLeft(Object,Object)。鉴于1N是一个
Object(一个可以超过long类型大小的对象),方法选择
是不正确的,因此补丁是损坏的。


“仅仅”修改paramArgTypeMatch的建议是不够的,因为选择一个方法胜过另一个方法的机制存在于编译器中,它不足以智能地做出这类决定。

0

评论者:redinger

考虑将此移出Release.next,征求Chas的评论。

0
_评价者:cemerick_

恐怕我目前对此类问题的细节没有任何特别的见解。我最初遇到该问题是在一段时间前,并在Rich的提议下开启了票据。如果票据的文本让任何人走入了死胡同,我很抱歉...
0

评论者:lvanderhart

由于决定了位运算只用于32/64位值,与位运算相关的问题不再重要。

虽有价值,但根据Rich的建议已降低优先级。

0

评论者:alexott

原始补丁的修改版

0

评论者:jafingerhut

Alex,你介意用唯一的文件名附件吗?我知道JIRA允许我们创建具有相同文件名的多个附件,我们也知道可以通过日期和上传附件的人的账户来区分它们,但给它们相同的名字只会引起混淆。

0
作者

评论者:alexott

将更新的补丁重命名为了独特名称

0
作者
参考:https://clojure.atlassian.net/browse/CLJ-666(由cemerick报告)
...