在Groovy中检查集合是否为null或空

eivnm1vs  于 2022-11-01  发布在  其他
关注(0)|答案(3)|浏览(424)

我需要对集合执行null或空检查;我认为!members?.empty是不正确的。有没有更好的方法来写下面的内容?

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

r8uurelv1#

的确有一种更好的方式。

if (members) {
    //Some work
}

如果members是一个集合,则执行所有操作。空值检查和空值检查(空集合被强制为false)。Groovy Truth万岁。:)

vbopmzt1

vbopmzt12#

FYI这种代码的作品(你可以发现它丑陋,这是你的权利:)):

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

换句话说,此代码具有空值/空检查两者都有无用:

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

def doAnotherThing(def member) {
  // Some work
}
laximzn5

laximzn53#

!members.find()

我认为现在解决这个问题的最好方法是上面的代码。它从Groovy 1.8.1开始工作。例如:

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

def lst6 = null; 
assert !lst6.find()

相关问题