неофитские грабле
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 }