Обнаружение первого и последнего элемента внутри Groovy каждая закрытие {}
-
26-09-2019 - |
Вопрос
Я использую 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) {......}
Работает для карт