字符上的XOR在groovy上不起作用
为什么groovy不支持这一点字符上的XOR在groovy上不起作用,groovy,xor,Groovy,Xor,为什么groovy不支持这一点 ('a' as char) ^ ('b' as char) 它引起 groovy.lang.MissingMethodException: No signature of method: java.lang.Character.xor() is applicable for argument types: (java.lang.Character) values: [b] Possible solutions: div(java.lang.Char
('a' as char) ^ ('b' as char)
它引起
groovy.lang.MissingMethodException: No signature of method: java.lang.Character.xor() is applicable for argument types: (java.lang.Character) values: [b]
Possible solutions: div(java.lang.Character), any(), any(groovy.lang.Closure), plus(java.lang.Character), is(java.lang.Object), use([Ljava.lang.Object;)
at Script1.run(Script1.groovy:2)
据我所知,它破坏了与java兼容的源代码。适用于Groovy 1.8.4:
println( ('a' as char) ^ ('b' as char) )
印刷品
3
Groovy有很多地方的源代码与Java不兼容。答:还有一些事情,比如“不做”do…while
loop,等等
编辑
Groovy项目技术负责人Jochen Theodorou:
目前“正确”的方法是
println(('a'作为int)^('b'作为int))
而且它还应该打印3。至于为什么它有时会起作用
有时不是。。。我想那是因为我不小心实现了
这是原始优化的结果。这意味着你以后会收到这个
1.8版本,因为之前没有实施。这意味着只有当它们被启用时,它才能工作,这仅在特定的情况下是如此
情况
编辑#2
这看起来像是一个仅在JVM的某些实现中才会出现的问题。因此,希望Groovy的未来版本能够稍微消除这些差异:-)对我来说,在ubuntu上,Groovy 1.8.4 JVM:1.6.0不是这样的_23@fixitagain奇怪的适用于OS X Groovy版本:1.8.4 JVM:1.6.026我将在邮件中询问list@fixitagain祈求好运…谢谢,我想我碰到了一些小错误,比如
^
或as char
在某些平台上被错误处理。实际上,我做了一些测试,并且println 0x0001*('a'as char)^('b'as char)*0x0001
有效!甚至println 1*('a'作为字符)^('b'作为字符)*1
但听起来位操作是用整数进行的。您可以在删除1*
时找到它,它会引发一个涉及java.lang.Integer的错误。