Я знаю, мы не можем вернуться с .each{}
Закрытие в groovy, как .find{}
Закрытие. Тем не менее мне любопытно, почему приведенный ниже код выполняет только первую итерацию .find{}
.Вложенность groovy each {} внутри find {}
def findlist = [1,2,3,4,5]
def eachlist = [7,6,5]
findlist.find
{
int findelem = it
println "findelem : " + findelem
eachlist.each
{
int eachelem = it
println "eachelem : " + eachelem
if(it == findelem)
{
return true
}
return false
}
}
Он печатает:
findelem : 1
eachelem : 7
eachelem : 6
eachelem : 5
find{}
Почему выходит после первой итерации?
PS: Я понимаю, что этот код может не иметь никакого практического значения, просто любопытно о хорошем поведении.
так 'каждый {}' всегда возвращает всю коллекцию его итерация на? – Mahesha999
Да, так оно и работает. Пожалуйста, посмотрите [источники] (https://github.com/groovy/groovy-core/blob/master/src/main/org/codehaus/groovy/runtime/DefaultGroovyMethods.java#L1889). – Opal