Groovyのsumメソッドは空のListで実行するとnullが返ってくる

GroovyではCollectionクラスにsumメソッドがあります。

assert [1,2,3,4,5,6].sum() == 21

普通に使っている分にはいいですが、空のListだとnullが返ってきたので驚きました。。。

assert [].sum{} == null

で、Twitterで呟いたら。。。

凄い人から返事がきた。
こんな風にやればいいっぽい。

assert [].inject(0) { x,y -> x+y } == 0

実コードではsumにクロージャ渡してたので、同じようにListとクロージャ渡すようにして解決しました。

def sum = {l,c->l.inject(0) { x,y -> x + c(y) }}