println 'test' as Boolean //trueprintln 'test'.toBoolean() //falseprintln new Boolean('test') //false
有人可以澄清这个行为吗?
解决方法 这两个println 'test'.toBoolean() //falseprintln new Boolean('test') //false
使用接受单个String参数的构造函数来实例化一个java.lang.Boolean。根据the javadocs,规则是:
Allocates a Boolean object representing the value true if the string argument is not null and is equal,ignoring case,to the string “true”. Otherwise,allocate a Boolean object representing the value false.
在上述两种情况下,String不匹配“true”(不区分大小写),因此创建的布尔值为false。
相比之下,“测试”为布尔遵循了coercion to a boolean的Groovy语言规则,允许您写:
if ('hello') { println 'this string is truthy'}
对于String,规则是如果它为空或为空,则它的计算结果为false,否则为true。
我同意这可以被认为有点不一致,但是考虑到与java.lang.Boolean和实用程序的一致性的一致性,我认为他们选择后者是正确的。
总结以上是内存溢出为你收集整理的Groovy Truth:string到boolean不一致?全部内容,希望文章能够帮你解决Groovy Truth:string到boolean不一致?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)