概要
nullが混じったIntegerのリストから合計数を求めるサンプル。
個人的にはパターン4が好き。
def list = [null, 1, 2, null, 3, 4, 5, null]
// パターン1
def globalCounter = 0
for(def i = 0; i < list.size(); i++) {
if (list[i] != null) {
globalCounter += list[i]
}
}
assert 15 == globalCounter
// パターン2
assert 15 == list.inject(0) {x, y ->
if (y != null) {
x + y
} else {
x
}
}
// パターン3
assert 15 == list.inject(0){x, y ->
y != null ? x + y : x
}
// パターン4
assert 15 == list.findAll{it != null}.inject{x,y -> x+y}