我试图在Groovy中预测此代码的行为
userList.find { }
Run Code Online (Sandbox Code Playgroud)
当find调用该方法并传递一个闭包时,它返回第一个评估闭包的元素,使其理解为Groovies true.当find没有任何参数调用该方法时,它返回列表中true根据Groovy真值匹配的第一个对象.
如果使用空闭包会发生什么?
null返回?.find()?闭包始终具有返回值.可以通过闭包体中的一个或多个显式return语句指定该值,或者如果未明确指定return,则指定为最后执行的语句的值.如果最后执行的语句没有值(例如,如果最后一个语句是对void方法的调用),则返回null.
对象引用
非空对象引用被强制为true.
...Run Code Online (Sandbox Code Playgroud)assert !null
这告诉我,空闭包的返回值的真值总是假的,所以find永远不会找到任何东西,因此可能会返回null.
| 归档时间: |
|
| 查看次数: |
2086 次 |
| 最近记录: |