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