Вот приблизительное, но рабочее приближение моего кода
ArrayList<Integer> parents = new ArrayList<Integer>([1, 2, 8, 9])
def p = parents as Queue
p.find {
log.info("it is " + it)
if (it == 5) return true
p += 5
log.info("p is " + p)
return false
}
log.info("finally, p is " + p)
Вот лог
2020-01-09 16:35:55,971 INFO [runner.AbstractScriptRunner]: it is 1
2020-01-09 16:35:55,971 INFO [runner.AbstractScriptRunner]: p is [1, 2, 8, 9, 5]
2020-01-09 16:35:55,971 INFO [runner.AbstractScriptRunner]: it is 2
2020-01-09 16:35:55,972 INFO [runner.AbstractScriptRunner]: p is [1, 2, 8, 9, 5, 5]
2020-01-09 16:35:55,972 INFO [runner.AbstractScriptRunner]: it is 8
2020-01-09 16:35:55,972 INFO [runner.AbstractScriptRunner]: p is [1, 2, 8, 9, 5, 5, 5]
2020-01-09 16:35:55,972 INFO [runner.AbstractScriptRunner]: it is 9
2020-01-09 16:35:55,972 INFO [runner.AbstractScriptRunner]: p is [1, 2, 8, 9, 5, 5, 5, 5]
2020-01-09 16:35:55,972 INFO [runner.AbstractScriptRunner]: finally, p is [1, 2, 8, 9, 5, 5, 5, 5]
l oop должен был бы повторить 5 раз, но это нет, почему это? В p
добавлено 5, и журнал показывает это, что означает, что массив расширяется, но l oop работает только 4 раза, что соответствует размеру исходного массива.
То же самое происходит в моем реальном коде, где я ищу элементы массива, используя for (i in p)
, чтобы найти родительские значения i (папка в структуре каталогов), а затем добавляю эти результаты в p, чтобы я мог продолжать подниматься по структуре каталогов до тех пор, пока не останется родителей
Среда: Groovy скрипт, запущенный в Jira через Script Runner.