Я пытаюсь написать код скрипта groovy, но обнаружил, что скрипт groovy не поддерживает лямбда-выражения. Может ли кто-нибудь помочь мне преобразовать этот фрагмент кода, чтобы он работал и для скрипта groovy?
if (CollectionUtils.isNotEmpty(orderModel.getFreeProductSets())){
orderModel.getFreeProductSets().forEach(orderFreeProductSetModel -> {
if (CollectionUtils.isNotEmpty(orderFreeProductSetModel.getFreeProducts())){
modelService.removeAll(orderFreeProductSetModel.getFreeProducts());
}
else{
System.out.println("no entry found for orderFreeProductSetModel");
}
});
modelService.removeAll(orderModel.getFreeProductSets());
}
else{
System.out.println("FreeProductSets is empty");
}
Спасибо.
Вы можете попробовать что-то вроде этого:
if (CollectionUtils.isNotEmpty(orderModel.getFreeProductSets())) {
orderModel.getFreeProductSets().each{ orderFreeProductSetModel ->
if (CollectionUtils.isNotEmpty(orderFreeProductSetModel.getFreeProducts())) {
modelService.removeAll(orderFreeProductSetModel.getFreeProducts());
} else {
System.out.println("no entry found for orderFreeProductSetModel");
}
};
modelService.removeAll(orderModel.getFreeProductSets());
} else {
System.out.println("FreeProductSets is empty");
}
Вам просто нужно было использовать foreach{} вместо foreach()
Это просто синтаксис groovy, вам нужно использовать foreach{it->..} или each {it->..} вместо foreach(it->.) в синтаксисе java
ВСЕ ЕЩЕ ОШИБКА: ИСКЛЮЧЕНИЕ: Сбой компиляции скрипта [причина: org.codehaus.groovy.control.MultipleCompilationErrorsException: сбой при запуске: Script78.groovy: 20: неоднозначное выражение может быть либо выражением закрытия без параметров, либо изолированным блоком открытого кода ; решение: добавьте явный список параметров закрытия, например. {it -> ...} или заставить его рассматриваться как открытый блок, назначив ему метку, например. L:{...} @ строка 20, столбец 75. { orderFreeProductSetModel -> { ^ 1 ошибка ]
Я обновил скрипт, попробуйте еще раз
Большое спасибо :) Теперь работает нормально. Скажите, пожалуйста, какую ошибку я совершил?
Вам нужно было использовать orderModel.getFreeProductSets().forEach{ orderFreeProductSetModel -> ..}
вместо orderModel.getFreeProductSets().forEach(orderFreeProductSetModel -> {})
, у вас просто была ошибка в синтаксисе
Не могли бы вы уточнить?