Groovy Truth:string到boolean不一致?
在groovy:
println 'test' as Boolean //true println 'test'.toBoolean() //false println new Boolean('test') //false 有人可以澄清这个行为吗? 解决方法
这两个
println 'test'.toBoolean() //false println new Boolean('test') //false 使用接受单个String参数的构造函数来实例化一个java.lang.Boolean。根据the javadocs,规则是:
在上述两种情况下,String不匹配“true”(不区分大小写),因此创建的布尔值为false。 相比之下,“测试”为布尔遵循了coercion to a boolean的Groovy语言规则,允许您写: if ('hello') { println 'this string is truthy' } 对于String,规则是如果它为空或为空,则它的计算结果为false,否则为true。 我同意这可以被认为有点不一致,但是考虑到与java.lang.Boolean和实用程序的一致性的一致性,我认为他们选择后者是正确的。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |