我有以下地图:
def map = [];
map.add([ item: "Shampoo", count: 5 ])
map.add([ item: "Soap", count: 3 ])
Run Code Online (Sandbox Code Playgroud)
我想得到count地图中所有属性的总和.在使用LINQ的C#中,它将类似于:
map.Sum(x => x.count)
Run Code Online (Sandbox Code Playgroud)
我如何在Groovy中做同样的事情?
tim*_*tes 20
假设你有一个这样的列表:
List list = [ [item: "foo", count: 5],
[item: "bar", count: 3] ]
Run Code Online (Sandbox Code Playgroud)
然后有多种方法可以做到这一点.最可读的可能是
int a = list.count.sum()
Run Code Online (Sandbox Code Playgroud)
或者你可以在整个列表中使用Closure形式的sum
int b = list.sum { it.count }
Run Code Online (Sandbox Code Playgroud)
或者您甚至可以使用更复杂的路线,例如注入
int c = list.count.inject { tot, ele -> tot + ele } // Groovy 2.0
// c = list.count.inject( 0 ) { tot, ele -> tot + ele } // Groovy < 2.0
Run Code Online (Sandbox Code Playgroud)
所有这些都给出了相同的结果.
assert ( a == b ) && ( b == c ) && ( c == 8 )
Run Code Online (Sandbox Code Playgroud)
我会用第一个.
| 归档时间: |
|
| 查看次数: |
11018 次 |
| 最近记录: |