Groovy each クロージャ内の最初と最後の項目の検出
-
26-09-2019 - |
質問
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>
セクションで、のクラスを設定したいと思います。 <tr>
要素は、現在の項目が myList
最初または最後の項目です。
次のようなものを使用して項目インデックスをリストサイズに対してチェックするために手動に頼らずにこれを行うための素晴らしいGroovy化された方法はありますか? eachWithIndex{}
?
解決
あなたが使用することができます。
if(it == myList.first()) {
// First element
}
if(it == myList.last()) {
// Last element
}
他のヒント
リスト内からの要素が最後の1に等しい場合もございます。
このsbglasiusが提供する回答は、リストがredundants要素が含まれているときのような誤った結果につながる可能性があり
sbglasiusではなくis()
の==
を使用することができれば、
私はよく分からないけど、正しい答えは可能性があります:
myList.eachWithIndex{ elt, i ->
if(i == 0) {
// First element
}
if(i == myList.size()-1) {
// Last element
}
}
もし(it.after.value!= NULL){ ...... }
マップの作品
所属していません StackOverflow