我需要对一个集合进行null或empty检查;我认为!members?.empty
是不正确的。有没有更groovy的方法来编写以下内容?
if (members && !members.empty) {
// Some Work
}
确实有一种更加简便的方法。
if (members) {
//Some work
}
如果members
是一个集合,那么就做所有的事情。进行空值检查以及为空检查(空集合被强制转换为false
)。欢呼Groovy Truth。
请注意,这种代码是有效的(你可能觉得它很丑,但这是你的权利 :)):
def list = null
list.each { println it }
soSomething()
if (members && !members.empty) {
members.each { doAnotherThing it }
}
def doAnotherThing(def member) {
// Some work
}
!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
def lst6 = null;
assert !lst6.find()
members?.age.max()
会报错"Cannot invoke method max() on null object"。你需要使用members?.age?.max()
。 - GreenGiantmembers*.age.max()
。 - Muhd