Y a-t-il un meilleur moyen de le faire? Remarque: Le résultat souhaité est une chaîne concaténée avec des valeurs nulles laissées. p> p> Part1 code>,
Part2 code> et
Part3 code> sont définis des variables de chaîne (elles peuvent être nuls).
4 Réponses :
Vous pouvez faire ceci: vous pourrait em> être capable de réduire la fermeture jusqu'à juste Remarque: le gdk javadocs est un super em> ressource. p> p> {it} code> en fonction de la façon dont Vos articles de liste évalueront selon Vérité Groovy , mais cela devrait en rendre un peu plus serré. P >
Si vous utilisez retranchée
sans paramètres. Il retournera toutes les valeurs "véridiques". Cela devrait donc fonctionner:
def ans = [part1, part2, part3].findAll().join()
C'est essentiellement la même chose que ma réponse avec l'ajout de confirmation de la manière dont retranchez code> fonctionne, non?
Il supprime également la fermeture transmise à retranchée code> et mention
résultats résultats code>, ce qui pourrait être utile pour les autres cas.
Bon point. FindResults Code> a la bonne capacité à transformer les choses en tant que filtres. +1
J'aime ça, mais ça échoue pour moi. J'utilise Groovy 1.7.10, et la méthode Findallyl () jette une erreur lorsque l'un des éléments de tableau est NULL.
@Ryan Yeah, le Docs dit que le Niladic Windows code> a été ajouté à Groovy 1.8.1
Alternativement, vous pouvez le faire comme une opération de pliose avec ceci présente toute la liste et concaténe chaque élément successif à un résultat, avec une logique Pour utiliser la chaîne vide pour les éléments nuls. p> p> injecter code>:
+1 Inject est un moyen beaucoup plus puissant que ma réponse. C'est pourrait i> être un peu plus complexe et plus difficile à comprendre.
Vous pouvez utiliser grep code>:
Vous pouvez également utiliser simplement .grep () code> car il est par défaut à l'aide de la vérité Groovy en tant que filtre, mais c'est la même chose que d'utiliser
Restacletall () code>.
Vous pouvez emballer tout dans une ligne:
def ans = [Part1, Part2, Part3] .RemoveAll ([null]). Joindre () Code>, mais je ne suis pas sûr que ce que tu veux dire par "mieux".
@cdeszaq qui pourrait être meilleur, mais cela ne fonctionne pas. La méthode RemoveAll () renvoie un booléen et rejoindre () ne peut pas être appelé sur un booléen.