Obtenir le premier élément d'une liste idiomatique en Groovy
Laisser le code de parler première
def bars = foo.listBars()
def firstBar = bars ? bars.first() : null
def firstBarBetter = foo.listBars()?.getAt(0)
Est-il plus élégant ou idiomatiques façon à obtenir le premier élément d'une liste, ou null si il n'est pas possible? (Je ne considère pas un bloc try-catch élégante ici.)
- Ce n' #listBars retour? Groovy ne devraient pas jeter si vous essayez d'obtenir un élément qui n'existe pas à partir d'une liste.
final l = []
assert l[0] == null
assert l.getAt(0) == null
assert l instanceof ArrayList
InformationsquelleAutor Adam Schmideg | 2011-01-29
Vous devez vous connecter pour publier un commentaire.
Pas sûr que l'aide de la recherche est la plus élégante ou idiomatiques, mais il est concis et l'habitude de jeter un IndexOutOfBoundsException.
foo?.find{ it }
foo?.find()
sans la fermeture. Il sera de retour la première Groovy Vérité élément dans la liste ou la valeur null si toto est null ou si la liste est vide. source[null, new Object()].find {it}
sera de retour à l'objet, mais pas d'élément de valeur null.Vous pouvez également faire de
Ceci lancera une exception NullPointerException lors de foo est nulle, mais elle renvoie une valeur null sur une liste vide, contrairement à
foo.first()
qui va lever une exception à vide.Depuis Groovy 1.8.1 nous pouvons utiliser les méthodes prendre() et drop(). Avec le prendre() la méthode que nous obtenir des éléments à partir du début de la Liste. Nous passons le nombre de points que nous voulons en tant qu'argument à la méthode.
Pour supprimer des éléments à partir du début de la Liste que l'on peut utiliser le menu() la méthode. Passer le nombre d'éléments à déposer comme un argument à la méthode.
Noter que le liste originale n'est pas modifiée, le résultat de la prendre()/drop() est une méthode nouvelle liste.