Groovy Tip 3 如何在if条件语句中判断对象为空

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Groovy Tip 3 如何在if条件语句中判断对象为空相关的知识,希望对你有一定的参考价值。

Groovy Tip 3 如何在if条件语句中判断对象为空

在Java语言编程中,对对象的非空判断是一个永恒的话题。例如,经常需要对一个字符串进行如下的判断:
if(str!=null&&!str.equals(""))

......

输入这样的语句的确使人生厌,而且有时候还会忘掉输入“!str.equals("")”语句中的“!”导致代码出现逻辑错误。
而敏捷的Groovy语言开发就不需要担心这样的问题。同样的判断语句,只需要输入下面的代码:
def str = null

if(str)

println"str is not null"

else

println'str is null'

这个语句段的执行结果为:
str is null
可以看出,if(str)判断语句,当str为null的时候,不执行。可能要问,当str = ''的时候会怎样?
def str = ''

if(str)

println"str is not null"

else

println'str is null'

执行结果还是:
str is null
这样,可以把开头的那段Java代码改写成如下的代码了:
if(str)

......

这样就简洁多了。
除了字符串对象,那其他对象的非空判断?来看下面的例子:
def map = ['key1':'value1']

if(map)

println'map is not null'

else

println'map is null'


map.remove('key1')
if(map)

println'this time,map is not null'

else

println'this time,map is null'


执行结果为:
map is not null
this time,map is null

同样,来看看List对象:
def list = []
if(list)

println'list is not null'

else

println'list is null'

list<<'a'

if(list)

println'here, list is not null'

else

println'here, list is null too'


输出结果为:
list is null
here, list is not null

如果是Domain对象?
class Empl

String name


执行下面的语句:
Empl em = new Empl()

if(em)

println'em is not null'

else

println'em is null'


结果为:
em is not null
可以看出,对于Domain对象,只要该对象不是null,则if(em)条件为true。
参考技术A 例如,我们经常需要对一个字符串进行如下的判断: if(str!=null&&!str.equals("")) ...... 输入这样的语句的确使人生厌,而且有时候还会忘掉输入“!str.equals("")”语句中的“!”导致代码出现逻辑错误。而敏捷的Groovy语言开发就不需要我们担心这样的问题。同样的判断语句,我们只需要输入下面的代码: def str = null if(str) println"str is not null" else println'str is null' 这个语句段的执行结果为:str is null可以看出,if(str)判断语句,当str为null的时候,不执行。你可能要问,当str = ''的时候会怎样呢? def str = '' if(str) println"str is not null" else println'str is null' 执行结果还是:str is null这样,我们可以把开头的那段Java代码改写成如下的代码了: if(str) ...... 这样就简洁多了。不是吗?除了字符串对象,那其他对象的非空判断呢?我们来看下面的例子: def map = ['key1':'value1'] if(map) println'map is not null' else println'map is null' map.remove('key1') if(map) println'this time,map is not null' else println'this time,map is null' 执行结果为:map is not nullthis time,map is null 同样,我们来看看List对象: def list = [] if(list) println'list is not null' else println'list is null' list本回答被提问者采纳

可以为Groovy中的if语句中的字段赋值可以使数据库更新记录

我有一个简单的在线界面,用于编写Groovy脚本,并将其合并到更大的软件中。我在VB6中的项目和Groovy中的另一个项目之间蹦蹦跳跳,因此意外地使用了一个等号(VB6为if语句执行),我打算在Groovy中使用double-equals。

是否可以以这种方式为if语句中的数据库字段赋值实际更新其余if条件为真的所有记录?

答案

Java的赋值运算符将返回刚分配的变量。如果这是在一个期望布尔值的语句中,它将根据Groovy的真实性进行评估。我们可以在Groovy控制台中看到这个有一些断言:

groovy:000> assert (foo = 1)
===> null
groovy:000> assert (foo = 0)
ERROR org.codehaus.groovy.runtime.powerassert.PowerAssertionError:
assert (foo = 0)
            |
            0

或者使用if声明:

groovy:000> if ((foo = 'bar')) {
groovy:001>   println "Assignment was true!"
groovy:002> }
Assignment was true!

请注意,您需要使用双括号来“工作”,因为没有它们,您将在尝试解析它时遇到编译错误:

groovy:000> if (foo = 'bar') {
groovy:001>   println "Assignment was true!"
groovysh_parse: 2: expecting ')', found '=' @ line 2, column 9.
   if (foo = 'bar') {
           ^

它可能非常阴险。它有一些用例,就像一个while循环迭代一个方法的返回值,直到它返回false:

while (data = getData()) {
    doWork(data)
}
println "Done with all the data"

以上是关于Groovy Tip 3 如何在if条件语句中判断对象为空的主要内容,如果未能解决你的问题,请参考以下文章

C语言中,很多if语句并列时系统将如何执行?

JavaScript 中if条件判断语句

js的if语句判断条件到底是啥情况

if判断语句

Python ❀ 条件判断语句

Python ❀ 条件判断语句