الكشف عن العنصر الأول والأخير داخل مجموعة رائعة من كل {}

StackOverflow https://stackoverflow.com/questions/4012538

سؤال

أنا أستخدم Groovy's MarkupBuilder من Groovy لإنشاء صفحة 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> القسم ، أود تعيين فئة <tr> العنصر ليكون شيئًا مختلفًا اعتمادًا على ما إذا كان العنصر الحالي في myList هو العنصر الأول أو الأخير.

هل هناك طريقة رائعة لمحاسبة ذلك للقيام بذلك دون اللجوء إلى شيء دليل للتحقق من فهارس العناصر مقابل حجم القائمة باستخدام شيء مثل eachWithIndex{}?

هل كانت مفيدة؟

المحلول

يمكنك استخدام

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

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

نصائح أخرى

قد تؤدي الإجابة التي توفرها SBGlasius إلى نتيجة غير صحيحة مثل عندما تحتوي القائمة على عناصر متكررة ، لذا فإن عنصرًا من داخل القائمة قد يساوي آخر مرة.

لست متأكدًا مما إذا كان بإمكان Sbglasius استخدام is() بدلاً من == لكن الإجابة الصحيحة يمكن أن تكون:

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

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

if (it.after.value! = null) {......}

يعمل للخرائط

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top