2009-09-22 8 views
11

Hey, ich versuche, jedes Zeichenfolge Element einer Liste in groovyassign „es“ in jeder Iteration (groovy)

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

Das funktioniert aber nur innerhalb des Verschlusses zu trimmen, in der Liste der Saiten sind immer noch " foo "," bar "und" groovy ".

Wie kann ich das erreichen?

Antwort

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

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

+0

Richtig, kann Parens nicht mit Methoden ohne Parameter verlassen. Fest. – sepp2k

+2

Eine fantastische und saubere Lösung. Sehr geschätzt. Bedeutet, ich könnte etwas in der Art tun: items = ViewDefinition.findAllByIdInList (params.id.split ("-"). Collect {it so lang}) –

2

Nach dem Groovy Quick Start, collect Verwendung werden die Werte aus der Schließung zurück sammeln.

Hier ist ein kleines Beispiel die Groovy Shell mit:

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

@ sepp2k ich denke, dass

in rubin Werke und das funktioniert in groovy list = list.collect() {it.trim ();

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

Sie auch die Verbreitung Betreiber nutzen könnten. trim()}.

sammeln() ist viel besser.

1

Wenn Sie wirklich die Liste an Ort und Stelle hatte zu ändern, könnten Sie list.eachWithIndex {item, idx verwenden -> Liste [idx] = item:}

Verwandte Themen