欢迎!请参阅关于页面了解有关此如何工作的更多信息。
这应该按预期工作,例如
{{(Integer. 1N)}}
可能对{{BigInt}}、{{BigInteger}}和{{BigDecimal}}有效。
查看的方法是{{c.l.Reflector.paramArgTypeMatch}},如irc中的Rich所述。
trptcolin发表的评论:
有关如何影响左移位的clojure-dev列表中的问题:http://groups.google.com/group/clojure-dev/browse_thread/thread/2191cbf0048d8ca6
ataggart发表的评论:
CLJ-445修复补丁也修复了这个问题。
这个补丁在左移BigInt时失败了一个测试:(bit-shift-left 1N 10000)。原因是补丁更改了从(Object, Object)到(long, int)的(BigInt, Long)分派。
(bit-shift-left 1N 10000)
很明显,无法应用此补丁(除非另一个更改使其成为可能),但我将其提出作为对话的开始。
来自邮件列表的我的评论
如果测试失败,这很可能意味着Numbers.shiftLeft(long,int)被选用了,而不是Numbers.shiftLeft(Object,Object)。鉴于1N是一个Object(可以超过long类型大小),方法选择是错误的,因此补丁是损坏的。
关于“简单”修改paramArgTypeMatch的建议是不够的,因为决定优先选择一种方法而不是另一种的方法机制存在于编译器中,并且不够智能,不足以做出这样的决定。
评论人:redinger
考虑将此内容从Release.next移除 - 请求Chas的意见。
评论人:lvanderhart
关于位移动的问题已经无关紧要,因为已经决定位移动只适用于32/64位值。
仍然是一个有效的问题,但根据Rich的要求已降低优先级。
评论人:alexott
原始补丁的修改版本
评论人:jafingerhut
Alex,你介意附上一个独一无二的文件名吗?我知道JIRA让我们可以创建具有相同文件名的多个附件,并且我们知道我们可以通过日期和上传附件的人员账户来区分它们,但给他们同一个名字只会引起混淆。
将更新的补丁重命名为唯一名称