在groovy中有没有更好的方法来编写这个空检查和非空检查?

时间:2013-06-23 01:15:27

标签: grails groovy

在执行某些逻辑之前,我需要对某些代码执行 null / empty 检查。 我有以下项目,因为我认为!members?.empty不正确。

是否有更古老的方式来撰写以下内容?

if (members && !members.empty) {
    // Some Work
}

3 个答案:

答案 0 :(得分:143)

确实有一种Groovier方式。

if(members){
    //Some work
}
如果members是一个集合,

会执行所有操作。空检查和空检查(空集合被强制转换为false)。嚎叫Groovy Truth。 :)

答案 1 :(得分:0)

!members.find()

我认为现在解决此问题的最佳方法是上面的代码。自Groovy 1.8.1 http://docs.groovy-lang.org/docs/next/html/groovy-jdk/java/util/Collection.html#find()开始使用。例子:

def lst1 = []
assert !lst1.find()

def lst2 = [null]
assert !lst2.find()

def lst3 = [null,2,null]
assert lst3.find()

def lst4 = [null,null,null]
assert !lst4.find()

def lst5 = [null, 0, 0.0, false, '', [], 42, 43]
assert lst5.find() == 42

答案 2 :(得分:0)

仅供参考,这种代码有效(您很难看,这是您的权利:)):

def list = null
list.each { println it }
soSomething()

换句话说,这段代码具有空/空检查两者都没用:

if (members && !members.empty) {
    members.each { doAnotherThing it }
}

def doAnotherThing(def member) {
  // Some work
}
相关问题