在groovy中,有兩種方法,即any
和find
方法,可以在地圖中使用。'any'和'find'方法之間的Groovy差異
這兩種方法都會搜索我們感興趣的內容(也就是說,any
和find
方法返回元素是否在Map中,也就是他們需要搜索)。
但是在這個搜索中他們有什麼不同?
在groovy中,有兩種方法,即any
和find
方法,可以在地圖中使用。'any'和'find'方法之間的Groovy差異
這兩種方法都會搜索我們感興趣的內容(也就是說,any
和find
方法返回元素是否在Map中,也就是他們需要搜索)。
但是在這個搜索中他們有什麼不同?
(!list.find{predicate}) <> (!list.any{predicate})
但是:
(list.find{predicate}) >< (list.any{predicate})
如果有任何不Groovy中存在API,並且您希望將此功能添加到List metClass,則任何實現將爲:
java.util.List.metaClass.any={Closure c->
return delegate.find(c) != null
}
什麼是「>」運算符?它怎麼叫? – Agorreca 2017-05-18 14:38:54
他們實際上做不同的事情比較一般。 find
返回找到的實際元素,而any
產生一個bool值。什麼讓你對這個問題感到困惑的是時髦的事實。
所有未設置(空?)值將解析爲假
def x
assert !x
所以,如果你只是檢查假,然後從兩種方法的返回值將達到同樣的目的,因爲本質所有對象都有一個隱含的存在布爾值。
如果find找不到任何東西,它應該返回groovy false。這是「Any」的合約......所以儘管它們不相同,但聽起來像「Find」會讓兩者的合約變得模糊。 – 2013-02-08 23:08:15
提示不是答案。爲什麼接受?順便說一句:鏈接已經死了。 – 2015-08-31 13:47:08