这是疯狂还是斯巴达?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!=一些元素)
- 为什么不工作的呢?既然Groovy的1.8.0方法签名
public Number count(Closure closure)
支持
顺便说一句:“!它== 4“将始终返回false,应该写为”it!= 4“ – 2011-04-26 06:33:44
+1,以获得良好的解释并捕获一些不好的语义j0j0。 – 2011-04-26 17:55:42