неофитские грабле
Nov. 7th, 2013 15:51Сводя к минимуму встретившуюся ситуацию, получаем такой groovy-код:
Однако, переходя в реальный код, когда объекты чуть сложнее слабанного на коленке, получаем уже мистическую картину.
Вуаля, в i у нас нифига не e, а как раз самое d и поэтому видим КРОВЬКИШКИ. Чинится банально, хоть и не так выпендрёжно.
class B {List xs}
def a = [1,2,null, 3]
def b = new B()
b.xs = a
def c = b.xs.sum {i = it -> i != null ? i : 0}
println c
// 6
Однако, переходя в реальный код, когда объекты чуть сложнее слабанного на коленке, получаем уже мистическую картину.
// структура из распарсенного xml
// a.b.c.d.e, где e - интовое поле
result = a.b?.c?.sum
{ i = it?.d?.e
->
i != null
? i
: 0
}
Вуаля, в i у нас нифига не e, а как раз самое d и поэтому видим КРОВЬКИШКИ. Чинится банально, хоть и не так выпендрёжно.
result = a.b?.c?.sum
{ it?.d?.e != null
? it?.d?.e
: 0 }