這是瘋狂還是斯巴達?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