2011-03-01 53 views
3

在groovy中,有兩種方法,即anyfind方法,可以在地圖中使用。'any'和'find'方法之間的Groovy差異

這兩種方法都會搜索我們感興趣的內容(也就是說,anyfind方法返回元素是否在Map中,也就是他們需要搜索)。

但是在這個搜索中他們有什麼不同?

回答

7

你有看的文檔findany

提示:區別在於返回類型

+0

如果find找不到任何東西,它應該返回groovy false。這是「Any」的合約......所以儘管它們不相同,但聽起來像「Find」會讓兩者的合約變得模糊。 – 2013-02-08 23:08:15

+1

提示不是答案。爲什麼接受?順便說一句:鏈接已經死了。 – 2015-08-31 13:47:08

1
(!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 

} 

查找比任何

+0

什麼是「>」運算符?它怎麼叫? – Agorreca 2017-05-18 14:38:54

1

他們實際上做不同的事情比較一般。 find返回找到的實際元素,而any產生一個bool值。什麼讓你對這個問題感到困惑的是時髦的事實。

所有未設置(空?)值將解析爲假

def x 
assert !x 

所以,如果你只是檢查,然後從兩種方法的返回值將達到同樣的目的,因爲本質所有對象都有一個隱含的存在布爾值。

相關問題