Как использовать "продолжить" в каждом цикле 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)
    }
}