Обнаружение первого и последнего элемента внутри Groovy каждая закрытие {}

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

Вопрос

Я использую Groovy's Handy Markupbuilder для создания 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