什么是空封闭的Groovy真理?

Den*_*nis 2 groovy closures

我试图在Groovy中预测此代码的行为

userList.find { }
Run Code Online (Sandbox Code Playgroud)

.find文档

find调用该方法并传递一个闭包时,它返回第一个评估闭包的元素,使其理解为Groovies true.当find没有任何参数调用该方法时,它返回列表中true根据Groovy真值匹配的第一个对象.

如果使用空闭包会发生什么?

  1. 它会评估为true,从而返回列表的第一个元素吗?
  2. 是否总是评估为false并且在迭代列表后null返回?
  3. 它会表现得像.find()

Jon*_*eet 7

来自Groovy Closures形式定义(替代来源):

闭包始终具有返回值.可以通过闭包体中的一个或多个显式return语句指定该值,或者如果未明确指定return,则指定为最后执行的语句的值.如果最后执行的语句没有值(例如,如果最后一个语句是对void方法的调用),则返回null.

来自Groovy Truth

对象引用
非空对象引用被强制为true.
...

assert !null
Run Code Online (Sandbox Code Playgroud)

这告诉我,空闭包的返回值的真值总是假的,所以find永远不会找到任何东西,因此可能会返回null.