| 

.NET C# Java Javascript Exception

for ... continue

Dies ist das Archiv des ehemaligen Forums zum Thema Groovy, Grails, Griffon und Bean Scripting Framework, welches unter groovy-forum.de existierte. Die neue Adresse des Groovy-Forums ist: http://codekicker.de/fragen/themen/groovy.


for ... continue

Bytelight - 01.04.2009 15:15
Hallo,
habe als Anfänger in Groovy eine Frage.

In einer For-Schleife frage ich bestimmte Dinge ab. Bei zwei Bedingungen gehe ich mit continue zurück in die For-Schleife. Bei den anderen beiden Bedingungen muss ich noch eine weitere Bedingung prüfen (also if innerhalb von if). Trifft der Fall zu, versuche ich hier ebenfalls mit "continue" die Schleife wieder zu starten.
Wenn ich aber if in if habe, wird nicht die Schleife neu gestartet, sondern zur nächsten if-Anfrage gegangen - zumindest zeigt es der Debugger von NetBeans es so an., das Ergebnis ist auch entsprechend :-(

Also habe ich versucht, wie in Java die for-Schleife zu bennen:
 check: for ... {
    if(...){
        if(...){
            continue check
        }
    }
}

Dennoch wird nicht wieder zum for gesprungen, sondern bei der nächsten Abfrage weiter gemacht.

Mache ich was falsch oder kann man in Groovy nicht zur äußeren Schleife zurückspringen?

Bytelight


Re: for ... continue

christian - 01.04.2009 15:27
Hallo und willkommen im Forum!

Wozu benutzt du überhaupt die Sprungmarke? Wenn du nur eine Schleife hast, führt "continue" so oder so zu einem Rückkehr zum Schleifenkopf und falls die Abbruchbedingung nicht erfüllt ist auch zu einem neuen Durchlauf.

Das folgende Beispiel entspricht im Prinzip deinem Beispiel und veranschaulicht, dass aus der inneren Bedingung zum Kopf gesprungen wird, wenn aus der Liste "true" gelesen wird.

List l = [false, true, false]

for(element in l){
  if(true)
    if(element)
      continue
    println element
}

Ausgabe:
false
false

Gruß
Christian


Re: for ... continue

Bytelight - 01.04.2009 21:36
Hallo Christian,

vielen Dank für deine Antwort.

Habe dein Beispiel mal durch den Debugger von eclipse gejagt, wobei ich erstaunt war zu sehen, dass er nach "continue" noch "println element" als nächsten Schritt markiert hat. Ich gehe mal davon aus, dass es daran liegt, dass scheinbar die letzte Anweisung immer angesprungen, aber dennoch nicht "verarbeitet" wird. Ist bei NetBeans auch so.

Habe das Problem bei mir inzwischen so gelöst, dass ich nur noch nicht geschachtelte Abfragen eingebaut habe, da habe ich dann nicht das Problem, von einer inneren Schleife nach außen wechseln zu müssen. Wenngleich es mich interessieren würde, ob es bei Groovy ein Äquivalent zur benannten (äußeren) Schleife gibt (vielleicht brauche ich es später mal ;-))

Ich hatte übrigens innerhalb zweier geschachtelter If-Abfragen eine weitere while-schleife ...

Grüße

Bytelight


Stelle deine Groovy-Frage jetzt!


Diese Seite zeigt den Thread "for ... continue" der ehemaligen Webseite groovy-forum.de, welche durch einen Serverunfall zerstört wurde. codekicker.de hat viele Konversationen über die beliebte Programmiersprache Groovy und zugehörige Frameworks wie das Grails-Framework retten können.

Hast Du eine Frage zum Thema Groovy, Grails oder allgemein Java? Viele ehemalige groovy-forum.de Mitglieder beantworten dir auf codekicker.de deine Frage! Stelle jetzt eine Frage!

Viele weitere Diskussionen zu Grails und Groovy befinden sich auf der Threadübersicht des alten groovy-forum.de.