Как использовать "продолжить" в каждом цикле groovy
Я новичок в groovy (работал на java), пытаясь написать некоторые тестовые случаи с помощью Spock framework. Мне нужен следующий фрагмент Java, преобразованный в groovy snippet, используя "каждый цикл"
Фрагмент Java:
List<String> myList = Arrays.asList("Hello", "World!", "How", "Are", "You");
for( String myObj : myList){
if(myObj==null) {
continue; // need to convert this part in groovy using each loop
}
System.out.println("My Object is "+ myObj);
}
Заводной Фрагмент:
def myObj = ["Hello", "World!", "How", "Are", "You"]
myList.each{ myObj->
if(myObj==null){
//here I need to continue
}
println("My Object is " + myObj)
}
3 ответов
использовать return
, поскольку закрытие в основном является методом, который вызывается с каждым элементом в качестве параметра, такого как
def myObj = ["Hello", "World!", "How", "Are", "You"]
myList.each{ myObj->
if(myObj==null){
return
}
println("My Object is " + myObj)
}
или переключить шаблон на
def myObj = ["Hello", "World!", "How", "Are", "You"]
myList.each{ myObj->
if(myObj!=null){
println("My Object is " + myObj)
}
}
или использовать findAll
прежде чем отфильтровывать null
объекты
def myList = ["Hello", "World!", "How", "Are", null, "You"]
myList.findAll { it != null }.each{ myObj->
println("My Object is " + myObj)
}
вы можете использовать стандартный for
петли с continue
:
for( String myObj in myList ){
if( something ) continue
doTheRest()
}
или использовать return
на each
С закрытия:
myList.each{ myObj->
if( something ) return
doTheRest()
}
вы также можете ввести только свой if
оператор, если объект не null
.
def myObj = ["Hello", "World!", "How", "Are", "You"]
myList.each{
myObj->
if(myObj!=null){
println("My Object is " + myObj)
}
}