在groovy中,有两种方法可以在地图中使用any
和find
方法。
这两种方法都会“搜索”我们感兴趣的内容(也就是说,any
和find
方法返回元素是否在Map中,也就是说,它们需要搜索)。
但在这次搜索中他们有何不同?
答案 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
}