Groovyの便利なMarkupBuilderを使用して、さまざまなソースデータからHTMLページを作成しています。
私がうまくやるのに苦労していることの1つは、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>
セクションで、myList
の現在のアイテムが最初のアイテムであるか最後のアイテムであるかに応じて、<tr>
要素のクラスを異なるものに設定したいと思います。
eachWithIndex{}
のようなものを使用してリストサイズに対してアイテムインデックスをチェックするために手動で何かに頼ることなくこれを行うための素晴らしいGroovy化された方法はありますか?
あなたが使うことができます
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){......}
マップで動作します