Groovy 元素比较
这是疯狂,还是斯巴达?
groovy:000> b = [1,2,3,4]
===> [1, 2, 3, 4]
groovy:000> b.count { !it.equals(4) }
===> 0
groovy:000> b.count { !it == 4 }
===> 0
groovy:000> b.count { it == 4 }
===> 0
groovy:000> b.count { it == 1 }
===> 0
groovy:000> b[0]
===> 1
groovy:000> b.each { println it }
1
2
3
4
===> [1, 2, 3, 4]
groovy:000> print b.class
class java.util.ArrayList===> null
groovy:000> b.each { println it.class }
class java.lang.Integer
class java.lang.Integer
class java.lang.Integer
class java.lang.Integer
===> [1, 2, 3, 4]
groovy:000> 4.equals(b[3])
===> true
groovy:000>
我在这里遇到了“意外的期望”的情况。 Groovy 告诉我,我有一个 Integer 的 ArrayList,我希望我应该能够简洁而轻松地执行像上面 3 个查询这样的可爱的小搜索。但没有。
- 执行上述操作的惯用 Groovy 方法是什么(计算 x != 某个元素的元素数量)
- 为什么这不起作用?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
方法签名
请注意,从 Groovy 1.8.0 开始就支持 (当前版本是 1.7.10) - 请参阅 http://groovy.codehaus.org/groovy-jdk/java/util/Collection.html#count(groovy.lang.Closure)
在 Groovy 1.8 之前,上面的代码调用方法 ' count(Object value)',计算给定值在集合中出现的次数。提供一个闭包实例作为实际参数“值”会导致上述结果。
be aware that the method signature
is supported since Groovy 1.8.0 (current production is 1.7.10) - see http://groovy.codehaus.org/groovy-jdk/java/util/Collection.html#count(groovy.lang.Closure)
Before Groovy 1.8, the code above calls method 'count(Object value)', which counts the number of occurrences of the given value inside the collection. providing a closure instance as actual parameter 'value' leads to the results described above.
这是一种方法:
Here's one way: