在每次迭代中分配“it”(groovy)

时间:2009-09-22 09:05:10

标签: string groovy immutability trim

嘿,我尝试修剪groovy中列表的每个字符串项

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

但这仅适用于闭包,在列表中字符串仍然是“foo”,“bar”和“groovy”。

我如何实现这一目标?

5 个答案:

答案 0 :(得分:23)

list = list.collect { it.trim() }

答案 1 :(得分:6)

您也可以使用点差运算符:

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

答案 2 :(得分:2)

根据Groovy Quick Start,使用collect将收集从闭包返回的值。

以下是使用Groovy Shell的一个小例子:

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

答案 3 :(得分:1)

如果你真的必须修改列表,你可以使用list.eachWithIndex {item,idx - > list [idx] = item.trim()}。

collect()更好。

答案 4 :(得分:0)

@ sepp2k我认为这适用于ruby

这适用于groovy list = list.collect(){it.trim(); }