2009-09-22 15 views
11

Ehi, io cerco di tagliare ogni voce di stringa di un elenco in Groovyassegnare "it" in ogni iterazione (Groovy)

list.each() { it = it.trim(); } 

Ma questo funziona solo all'interno della chiusura, nella lista delle stringhe sono ancora " foo "," bar "e" groovy ".

Come posso ottenerlo?

risposta

23
list = list.collect { it.trim() } 
+0

list = list.collect {it.trim()} ty – codevour

+0

Destra, non può lasciare il paren con metodi senza parametri. Fisso. – sepp2k

+2

Una soluzione fantastica e ordinata. Molto apprezzato. Potrei fare qualcosa del genere: items = ViewDefinition.findAllByIdInList (params.id.split ("-"). Collect {it as long}) –

2

Secondo la Groovy Quick Start, utilizzando collect raccoglierà i valori restituiti dalla chiusura.

Ecco un piccolo esempio utilizzando la Shell Groovy:

groovy:000> ["a ", " b"].collect { it.trim() } 
===> [a, b] 
0

@ sepp2k penso che lavori in rubino

e questo funziona in Groovy list = list.collect() {it.trim (); }

6

Si potrebbe anche usare l'operatore di diffusione:

def list = [" foo", "bar ", " groovy "] 
list = list*.trim() 
assert "foo" == list[0] 
assert "bar" == list[1] 
assert "groovy" == list[2] 
1

Se davvero si dovesse modificare l'elenco sul posto, si potrebbe usare list.eachWithIndex {voce, idx -> Lista [idx] = item. tagliare()}.

collect() è molto meglio.

Problemi correlati