J'ai besoin d'effectuer un contrôle de nullité ou de vide sur une collection ; je pense que !members?.empty
est incorrect. Existe-t-il une façon plus agréable d'écrire ce qui suit ?
if (members && !members.empty) {
// Some Work
}
J'ai besoin d'effectuer un contrôle de nullité ou de vide sur une collection ; je pense que !members?.empty
est incorrect. Existe-t-il une façon plus agréable d'écrire ce qui suit ?
if (members && !members.empty) {
// Some Work
}
Il existe en effet une voie plus douce.
if (members) {
//Some work
}
fait tout si members
est une collection. Vérification des nuls et des vides (les collections vides sont forcées de se transformer en collection) false
). Saluez Groovy Truth . :)
Pour info, ce type de code fonctionne (vous pouvez le trouver laid, c'est votre droit :) ) :
def list = null
list.each { println it }
soSomething()
En d'autres termes, ce code a des contrôles de type null/empty les deux inutile :
if (members && !members.empty) {
members.each { doAnotherThing it }
}
def doAnotherThing(def member) {
// Some work
}
!members.find()
Je pense maintenant que la meilleure façon de résoudre ce problème est le code ci-dessus. Il fonctionne depuis Groovy 1.8.1 [http://docs.groovy-lang.org/docs/next/html/groovy-jdk/java/util/Collection.html#find()](http://docs.groovy-lang.org/docs/next/html/groovy-jdk/java/util/Collection.html#find()) . Exemples :
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()
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.