Erkennen erste und letzte Element in einem Groovy jeder {} Schließung
-
26-09-2019 - |
Frage
Ich bin mit Groovy praktisch MarkupBuilder eine HTML-Seite aus verschiedenen Quelldaten zu bauen.
Eine Sache, die ich gut zu tun, bin zu kämpfen ist eine HTML-Tabelle erstellen und unterschiedliche Stilklassen zu den ersten und letzten Reihen anzuwenden. Dies ist wahrscheinlich am besten mit einem Beispiel veranschaulicht ...
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)
}
}
}
}
Im <tbody>
Abschnitt, würde Ich mag die Klasse des <tr>
Elements setzen, etwas anderes zu sein, je nachdem, ob das aktuelle Element in myList
der ersten oder der letzte Punkt.
Gibt es eine nette-Groovy ified Weg, dies zu etwas ohne Rückgriff tun manuelle Artikel Indizes gegen die Listengröße zu überprüfen, so etwas wie eachWithIndex{}
mit?
Lösung
könnten Sie verwenden
if(it == myList.first()) {
// First element
}
if(it == myList.last()) {
// Last element
}
Andere Tipps
Die Antwort von sbglasius bereitgestellt wird, kann wie zu falschem Ergebnis führen, wenn die Liste enthält Redundanten Elemente so ein Element aus dem Innern der Liste kann die letzte entspricht.
Ich bin mir nicht sicher, ob sbglasius is()
statt ==
verwenden könnte, aber eine richtige Antwort sein könnte:
myList.eachWithIndex{ elt, i ->
if(i == 0) {
// First element
}
if(i == myList.size()-1) {
// Last element
}
}
if (it.after.value! = Null) { ...... }
Arbeiten für Karten