Test si la variable n'est pas nulle dans si l'état
J'ai la méthode suivante où je veux tester le event.status
bien que si status
a été adoptée en:
def findEvent(String desc, String status = null, Collection events) {
return events.find {
it.description == desc && \\If status is not null: it.status == status
}
throw new Exception("Review Event Record Not Found: ${desc}")
}
J'ai pensé qu'il pourrait être fait comme ça, mais il ne semble pas fonctionner:
def findEvent(String desc, String status = null, Collection events) {
return events.find {
it.description == desc && (status != null ?: {it.status == status})
}
throw new Exception("Review Event Record Not Found: ${desc}")
}
Est-il de toute façon ce qui pourrait être fait? Ou dois-je revenir à quelque chose comme ceci:
if (status != null) {
return events.find {
it.description == desc && it.status == status
}
} else if (status == null) {
return events.find {
it.description == desc
}
}
Est-il une sorte de meilleure pratique?
OriginalL'auteur Matthew Brown | 2012-06-12
Vous devez vous connecter pour publier un commentaire.
Je ne crois pas que l'expression a le sens tel qu'il est.
Elvis signifie "si truthy, l'utilisation de la valeur, sinon utiliser cette autre chose."
Votre "autre chose" est une fermeture, et la valeur est
status != null
, ni de ce qui semble être ce que vous voulez. Sistatus
est null, Elvis dittrue
. Si elle ne l'est pas, vous obtenez une couche supplémentaire de fermeture.Pourquoi ne pouvez-vous pas simplement utiliser:
Même si n'a pas travaux, tous vous avez besoin est la fermeture de retour la valeur appropriée, non? Il n'y a pas besoin de créer deux
find
des appels, il suffit d'utiliser une variable intermédiaire.OriginalL'auteur Dave Newton