如何最好地计算Groovy中的嵌套对象

时间:2014-03-17 19:29:17

标签: grails groovy

我有一个Groovy类,看起来很像这样:

class A {

    B[] requests = []

}

在代码中,我有一个A数组,我想知道其中包含多少个B.什么是最常规的计算方法?我知道如何在Java中实现它,但它看起来比我怀疑Groovy希望它更加丑陋。这是我迄今为止所做的工作:

list.each{ a -> count += a.requests.size() }

有更好的方法吗?

2 个答案:

答案 0 :(得分:2)

编码时,我会调查the KISS principle有关维护和清晰度的问题。并非一切都应该使用闪亮的功能。

您的版本是合理的' Groovy',但您可能需要考虑使用隐式变量itsee doc):

def count = 0
list.each{ count += it.requests.size() }

答案 1 :(得分:1)

使用spread operator (*)

class A {
    B[] requests = []
}

class B{
    String name
}

assert [
     new A(requests : [new B(name: 'John'), new B(name: 'Jim'), 
                       new B(name: 'Alex')]), 
     new A(requests : [new B(name: 'Test'), new B(name: 'Alex')]), 
     new A(requests : [new B(name: 'John')])
]*.requests*.size() == [3, 2, 1]