Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
GroovyTruth与隐式构造函数之间的冲突_Groovy_Implicit Conversion_Specifications - Fatal编程技术网

GroovyTruth与隐式构造函数之间的冲突

GroovyTruth与隐式构造函数之间的冲突,groovy,implicit-conversion,specifications,Groovy,Implicit Conversion,Specifications,我注意到隐式构造函数和GroovyTruth之间存在一些冲突 考虑以下代码 assert new File('/') == ['/'] as File assert Boolean.TRUE == ["false"] as Boolean 第一行是文件(字符串)构造函数的隐式调用。 第二行只返回true,因为列表不是空的。但是它可以(应该)调用具有不同结果值的布尔(字符串)构造函数(false) 是bug、文档化功能还是smth。其他的我应该将其报告为bug吗?当您这样做时: ['false'

我注意到隐式构造函数和GroovyTruth之间存在一些冲突

考虑以下代码

assert new File('/') == ['/'] as File
assert Boolean.TRUE == ["false"] as Boolean
第一行是文件(字符串)构造函数的隐式调用。 第二行只返回true,因为列表不是空的。但是它可以(应该)调用具有不同结果值的布尔(字符串)构造函数(false

是bug、文档化功能还是smth。其他的我应该将其报告为bug吗?

当您这样做时:

['false'] as Boolean
它最终通过检查
null
,然后在
集合上调用
asBoolean
,类型为

文件
示例中,它一直到
castToType的底部
,只是尝试调用

我不会说这是一个bug,但它肯定是Groovy的一个特性,必须加以考虑(现在更改它将是兼容性的一个重大突破)

当您这样做时:

['false'] as Boolean
它最终通过检查
null
,然后在
集合上调用
asBoolean
,类型为

文件
示例中,它一直到
castToType的底部
,只是尝试调用


我不会说这是一个bug,但它肯定是Groovy的一个特性,必须加以考虑(现在更改它将是兼容性的一个重大突破)

多亏了源代码链接!我能理解,这是怎么回事,但来源是最好的证明。很有趣,我只是忘了,Groovy内核是开源的!问题在于是否存在两个行为截然不同的几乎完全相同的代码行。若我看到关于它的文档页面,我会把它指向那个里。@Seagull别担心:-)很高兴我能帮上忙!请记住,
org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation
是一个codehaus groovy实现文件,而不是groovy语言的一部分,因此groovy的其他实现可以以不同的方式处理这些“特性”,就像将它们视为bug一样。幸运的是,目前没有其他groovy实现,任何值得一试的实现都需要遵循Groovy Truth的规则(这正是它所关注的)。所以这是一个有点空洞的论点感谢源链接!我能理解,这是怎么回事,但来源是最好的证明。很有趣,我只是忘了,Groovy内核是开源的!问题在于是否存在两个行为截然不同的几乎完全相同的代码行。若我看到关于它的文档页面,我会把它指向那个里。@Seagull别担心:-)很高兴我能帮上忙!请记住,
org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation
是一个codehaus groovy实现文件,而不是groovy语言的一部分,因此groovy的其他实现可以以不同的方式处理这些“特性”,就像将它们视为bug一样。幸运的是,目前没有其他groovy实现,任何值得一试的实现都需要遵循Groovy Truth的规则(这正是它所关注的)。所以这是一个有点空洞的论点