我试图预测Groovy中此代码的行为
userList.find { }
当调用find
方法并传递一个闭包时,它会将第一个评估闭包的元素返回到Groovies对true
的理解。
在没有任何参数的情况下调用find
方法时,它会根据Groovy事实返回列表中与true
匹配的第一个对象。
如果使用空闭包怎么办?
null
之后返回?.find()
吗?答案 0 :(得分:7)
来自Groovy Closures Formal Definition(Alternative Source):
闭包始终具有返回值。可以通过闭包体中的一个或多个显式return语句指定该值,或者如果未明确指定return,则指定为最后执行的语句的值。如果最后执行的语句没有值(例如,如果最后一个语句是对void方法的调用),则返回null。
对象引用
非空对象引用被强制为true ......assert !null
这告诉我,空闭包的返回值的真值总是假的,所以find
永远找不到任何东西,因此可能会返回null
。