'any'和'find'方法之间的Groovy区别

时间:2011-03-01 13:20:30

标签: groovy

在groovy中,有两种方法可以在地图中使用anyfind方法。

这两种方法都会“搜索”我们感兴趣的内容(也就是说,anyfind方法返回元素是否在Map中,也就是说,它们需要搜索)。

但在这次搜索中他们有何不同?

2 个答案:

答案 0 :(得分:3)

他们实际上做了不同的事情。 any返回找到的实际元素,而def x assert !x 生成bool值。是什么让你感到困惑的是真相。

任何未设置(null?)值将解析为false

from pyhive import hive
cursor = hive.connect('YOUR_HOST_NAME').cursor()
cursor.execute('SELECT * from table_name LIMIT 5',async=True)
print cursor.fetchall()

因此,如果你只是检查 false ,那么两个方法返回的值将起到同样的作用,因为基本上所有对象都有一个隐含的存在性布尔值。

答案 1 :(得分:2)

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

}

查找比任何

更通用