Пока итератор в заводной - PullRequest
       6

Пока итератор в заводной

0 голосов
/ 19 сентября 2019

Я пытаюсь создать цикл для чтения, например, 4200 пользователей от 1000 до 1000, но я не могу его обрезать, когда он достигает конца.Я попробовал это с, если, и я не мог сделать это.

Я запрограммировал в JAVA, но с Groovy я вижу, что структура отличается.

urlUsers = urlUsers.concat("/1/1000");        
List<UserConnectorObject> usersList = null;

while({    

gesdenResponse = GesdenUtils.sendHttpRequest(urlUsers, "LOOKUP", null,
request.getMetaData()?.getLogin(), request.getMetaData()?.getPassword());

log.info("Users data in JSON: "+gesdenResponse.getOutput())

usersList = GesdenUtils.fromJSON(gesdenResponse.getOutput(), GesdenConstants.USER_IDENTITY_KEY);

usersList.size() == 10;
log.info("List size in JSON "+usersList.size());
}()) continue

Ответы [ 2 ]

0 голосов
/ 28 сентября 2019

Groovy имеет множество структур цикла , но крайне важно разделить обычные (встроенные lang) и функции API, которые принимают замыкание в качестве аргумента

принять закрытие - нет простого способа избежать

Если вы хотите перебрать пользователей от A до B, вы можете использовать, например,

(10..20).each { userNo ->   // Here you will have all 10 iterations
    if ( userNo == 5) {
       return
    }
}

Если что-то возмутительное происходит в теле цикла, и вы не можете использовать return для выхода, так как тело цикла является замыканием (отдельная функция), и этот resurn просто выходит из этого замыкания.Следующая итерация произойдет сразу после.

использовать обычные встроенные структуры цикла lang - использовать break / continue

for (int userNo in 1..10) { Here you will have only 5 iterations.
   if (userNo == 5) {
       break
   }

}

0 голосов
/ 27 сентября 2019

Похоже, что ваше закрытие всегда возвращает ложь, потому что нет явного return, и последним вычисленным оператором является вызов log.info(String), который возвращает void.

Использование явного returnили переместить / удалить инструкцию журнала.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...