我有这个测试代码:
def test = null
test.each { }
Run Code Online (Sandbox Code Playgroud)
为什么我没有得到任何例外?
Dón*_*nal 11
each
试图以零安全的方式调用iterator
它的目标方法的实现.如果在空对象或没有方法的对象上调用,则不会发生任何事情.each
iterator
我还没有看到源代码,但它可能看起来像这样
Object each(Closure closure) {
if (this?.respondsTo("iterator")) {
def iterator = this.iterator()
while (iterator.hasNext() {
def item = iterator.next()
closure(item)
}
}
return this
}
Run Code Online (Sandbox Code Playgroud)
§实际上,这种方法可能是用Java而不是Groovy编写的