2009-09-22 13 views
11

अरे, मैं ग्रूवीअसाइन "यह" प्रत्येक यात्रा (ग्रूवी) में

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

में एक सूची के प्रत्येक स्ट्रिंग आइटम लेकिन बंद के भीतर यह केवल काम करता है ट्रिम करने के लिए प्रयास करते हैं, सूची में तार अभी भी कर रहे हैं " foo "," बार "और" groovy "।

मैं इसे कैसे प्राप्त कर सकता हूं?

उत्तर

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

सूची = list.collect {it.trim()} ty – codevour

+0

दाएं, बिना पैरामीटर के तरीकों के साथ माता-पिता को छोड़ नहीं सकते हैं। फिक्स्ड। – sepp2k

+2

एक शानदार और साफ समाधान। अत्यधिक सराहनीय। मतलब मैं ऐसा कुछ कर सकता था: आइटम = ViewDefinition.findAllByIdInList (params.id.split ("-")। {इसे लंबे समय तक एकत्र करें}) –

2

Groovy Quick Start के अनुसार, collect का उपयोग कर मूल्यों बंद से लौटे एकत्रित करेगा।

यह एक छोटा सा उदाहरण ग्रूवी शैल का उपयोग कर रहा है:

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

@ sepp2k मुझे लगता है कि कि माणिक

में काम करता है और इस ग्रूवी सूची में काम करता है = list.collect() {it.trim (); }

6

तुम भी फैल ऑपरेटर इस्तेमाल कर सकते हैं: -> सूची [IDX] = आइटम तुम सच में जगह में सूची को संशोधित करने के लिए किया था, तो

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

, आप list.eachWithIndex {आइटम, IDX इस्तेमाल कर सकते हैं। ट्रिम()}।

संग्रह() बेहतर तरीका है।