2010-10-25 8 views
23

मैं विभिन्न स्रोत डेटा से HTML पृष्ठ बनाने के लिए ग्रोवी के आसान मार्कअपबिल्डर का उपयोग कर रहा हूं।प्रत्येक ग्रोवी के अंदर पहली और आखिरी वस्तु का पता लगाने {} बंद

एक चीज जो मैं अच्छी तरह से करने के लिए संघर्ष कर रहा हूं वह एक HTML तालिका का निर्माण कर रही है और पहली और आखिरी पंक्तियों में विभिन्न शैली कक्षाओं को लागू करती है। यह शायद सबसे अच्छा एक उदाहरण के साथ सचित्र है ...

table() { 
    thead() { 
    tr(){ 
     th('class':'l name', 'name') 
     th('class':'type', 'type') 
     th('description') 
    } 
    } 
    tbody() { 
    // Add a row to the table for each item in myList 
    myList.each { 
     tr('class' : '????????') { 
     td('class':'l name', it.name) 
     td('class':'type', it.type) 
     td(it.description) 
     } 
    } 
    } 
} 

<tbody> अनुभाग में, मैं कुछ अलग निर्भर करता है कि myList में वर्तमान आइटम पहले या है होना करने के लिए <tr> तत्व के वर्ग सेट करना चाहते हैं अंतिम वस्तु

क्या eachWithIndex{} जैसे कुछ का उपयोग करके सूची आकार के विरुद्ध आइटम इंडेक्स को जांचने के लिए कुछ मैनुअल का उपयोग किए बिना ऐसा करने के लिए कोई अच्छा ग्रोवी-इफ़ीइड तरीका है?

उत्तर

43

आप इस्तेमाल कर सकते हैं

if(it == myList.first()) { 
    // First element 
} 

if(it == myList.last()) { 
    // Last element 
} 
+0

अच्छा टिप, उन तरीकों के बारे में पता नहीं था:

मुझे यकीन है कि अगर sbglasius is() बजाय == इस्तेमाल कर सकते हैं लेकिन एक सही जवाब हो सकता है नहीं कर रहा हूँ। – xlson

+0

उपयोगी, धन्यवाद। उपरोक्त के रूप में, उन तरीकों को पहले नहीं देखा था ... – tomtheguvnor

+3

बस याद रखें, कि पहले() और अंतिम() केवल सूची पर काम करता है, मानचित्र या सेट नहीं (http://groovy.codehaus.org/groovy-jdk के अनुसार /) – sbglasius

1

अगर (it.after.value! = नल) { ...... }

वर्क्स नक्शे

10

जवाब द्वारा प्रदान के लिए sbglasius गलत परिणाम का कारण बन सकता है जैसे कि सूची में अनावश्यक तत्व होते हैं, इसलिए सूची के अंदर से एक तत्व अंतिम व्यक्ति के बराबर हो सकता है।

myList.eachWithIndex{ elt, i -> 
    if(i == 0) { 
    // First element 
    } 

    if(i == myList.size()-1) { 
    // Last element 
    } 
} 
+0

प्रत्येक WithIndex के लिए धन्यवाद :) यह अच्छा है – Elaine

संबंधित मुद्दे