检测Groovy每个{}闭包内的第一个和最后一个项目

时间:2010-10-25 07:19:00

标签: html groovy closures markupbuilder

我正在使用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-ified方法来执行此操作,而无需使用某些手册来检查项目索引与列表大小使用类似eachWithIndex{}的内容?

2 个答案:

答案 0 :(得分:47)

您可以使用

if(it == myList.first()) {
   // First element
}

if(it == myList.last()) {
   // Last element
}

答案 1 :(得分:1)

if(it.after.value!= null){   ...... }

适用于地图