Ответ 1
Вы можете использовать
if(it == myList.first()) {
// First element
}
if(it == myList.last()) {
// Last element
}
Я использую Groovy удобный 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
первым или последним.
Есть ли хороший способ Groovy, чтобы сделать это, не прибегая к чему-то ручному, чтобы проверять индексы элементов на размер списка, используя что-то вроде 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) {...... }
Работает для карт