2009-09-22 19 views
11

でねえ、私はグルーヴィーアサイン「それは」各反復(グルーヴィー)

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

にリストの各文字列の項目をトリミングしてみてくださいしかし、クロージャ内でこれだけの作品は、リスト内の文字列は「まだですfoo "、" bar "、" groovy "のようなものです。

どうすれば実現できますか?

答えて

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

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

+0

パラメータがないメソッドでは、括弧を省略することはできません。一定。 – sepp2k

+2

素晴らしいときちんとした解決策。大変感謝しています。私は次のようなことができます:items = ViewDefinition.findAllByIdInList(params.id.split( " - ")。collect {it as long}) –

2

Groovy Quick Startによれば、collectを使用して閉鎖から返された値を収集します。ここで

は、Groovyのシェルを使用して少し例を示しますsepp2k @

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

私はルビー

で動作し、これはグルーヴィー リストに働く= list.collect(){it.trim(だと思います); }

6

また、拡散演算子を使用することができます。

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

あなたは本当に場所にリストを変更しなければならなかった場合、あなたはlist.eachWithIndex {アイテム、IDX使用することができます - >リスト[IDX] =アイテムを。トリム()}。

collect()は良い方法です。