2011-03-01 95 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 

所以,如果你只是检查,然后从两种方法的返回值将达到同样的目的,因为本质所有对象都有一个隐含的存在布尔值。