webentwicklung-frage-antwort-db.com.de

Wie benutze ich "Continue" in jedem Loop von Groovy?

Ich bin neu in Groovy (arbeitete an Java) und habe versucht, einige Testfälle mit dem Spock-Framework zu schreiben. Ich brauche das folgende Java Snippet, das mit "jeder Schleife" in ein grooviges Snippet umgewandelt wurde

Java-Snippet:

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

Groovy Snippet:

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

Verwenden Sie entweder return, da der Abschluss im Grunde eine Methode ist, die mit jedem Element als Parameter aufgerufen wird

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

Oder wechseln Sie Ihr Muster zu

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

Oder verwenden Sie vorher ein findAll, um null Objekte herauszufiltern

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

sie können entweder eine Standardschleife for mit continue verwenden:

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

oder benutze return in eachs Closure:

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

Sie können Ihre if -Anweisung auch nur eingeben, wenn das Objekt nicht null ist.

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