web-dev-qa-db-fra.com

Comment utiliser "continue" dans chaque boucle de groovy

Je suis nouveau sur groovy (j'ai travaillé sur Java), j'essaye d'écrire des cas de test en utilisant le framework Spock. J'ai besoin du Java converti en extrait groovy en utilisant "chaque boucle"

Extrait 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);
}

Extrait Groovy:

def myObj = ["Hello", "World!", "How", "Are", "You"]
myList.each{ myObj->
    if(myObj==null){
        //here I need to continue
    }
    println("My Object is " + myObj)
}
24
Karthikeyan

Soit return, car la fermeture est une méthode qui est appelée avec chaque élément comme paramètre comme

def myObj = ["Hello", "World!", "How", "Are", "You"]
myList.each{ myObj->
    if(myObj==null){
        return
    }
    println("My Object is " + myObj)
}

Ou changez votre modèle en

def myObj = ["Hello", "World!", "How", "Are", "You"]
myList.each{ myObj->
    if(myObj!=null){
        println("My Object is " + myObj)
    }
}

Ou utilisez un findAll avant pour filtrer les objets null

def myList = ["Hello", "World!", "How", "Are", null, "You"]
myList.findAll { it != null }.each{ myObj->
    println("My Object is " + myObj)
}
38
Vampire

vous pouvez soit utiliser une boucle for standard avec continue:

for( String myObj in myList ){
  if( something ) continue
  doTheRest()
}

ou utilisez return dans la fermeture de each:

myList.each{ myObj->
  if( something ) return
  doTheRest()
}
14
injecteer

Vous pouvez également saisir votre instruction if uniquement si l'objet n'est pas null.

def myObj = ["Hello", "World!", "How", "Are", "You"]
myList.each{ 
    myObj->
    if(myObj!=null){
        println("My Object is " + myObj)
    }
}
1
Andrew_CS