检测Groovy的每个{}闭包中第一项和最后一项
-
26-09-2019 - |
题
我使用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
}
}
如果(it.after.value!= NULL){ ...... }
Works的地图
不隶属于 StackOverflow