# Schleifen ## While-Schleife Syntax Kopfgesteuerte `while-Schleife` ```Groovy def y = 0 while (y < 5){ print(y + " ") // Ausgabe: 1 2 3 4 y++ } ``` ## for-Schleife Syntax der `for-Schleife` wie in Java ```Groovy for (int i = 0; i < 5; i++){ print(i + " ") // Ausgabe: 1 2 3 4 } ``` ## times()-Schleife: In Groovy besitzen Zahlen die Methode `n.times()`. Sie bekommt ein Closure als Parameter und führt die übergebene Methode **n-mal** aus. Man kann den Variablen innerhalb der Closure Namen geben, kann es jedoch auch sein lassen. Gibt man den Variablen keinen Namen, wird der Name *it* benutzt. ````Groovy 5.times {def e -> print e + " "} // Ausgabe: 0 1 2 3 4 5.times {println it + " "} // Ausgabe: 0 1 2 3 4 ```` ## each()-Schleife: Man kann über Elemente von Collections iterieren, indem man die collection `.each()` Methode benutzt. Sie bekommt ein Closure als Parameter und wendet den Ausdruck auf alle Elemente der Liste an. ````Groovy def map = [name: "Thomas", nachname: "Smits"] map.each {key, value -> println "$key: $value"} // Ausgabe: name: Thomas nachname: Smits ```` ## for-in Schleife ```Groovy for (variable in iterable) {body} ``` Die `for-in Schleife` folgt dieser einfachen Struktur. Sie durchläuft das Objekt `iterable`. Häufig verwendete Iterables sind Ranges, Collections, Maps, Arrays, Iterators und Enumerationen. Jedes Objekt kann ein Groovy ein Iterable sein. Klammern um den Body sind optinal, wenn er nur aus einer Anweisung besteht. Im Folgenden Beispiele für Iterationen: ### Über Ranges: ```Groovy for (i in 0..5){ print(i + " ") // Ausgabe: 1 2 3 4 5 } for (i in 'a'..<'d'){ print(i + " ") // Ausgabe: letzter Buchstabe exklusiv } ``` ### Über eine Liste: ```Groovy def list = [1, 2, 3, 4, 5] for (element in list){ print element + " " // Ausgabe: 1 2 3 4 5 } ``` ### über eine Array: ```Groovy def arr = ['a', 'b', 'c'] for (ch in arr){ print (ch + " ") // Ausgabe: a b c } ``` ### Über eine Map: ```Groovy def map = [name: "Alice", age: 18] for (entry in map){ print(${entry.key}: ${entry.value}) // Ausgabe: name: Alice age: 18 } ``` ### Über eine Zeichenfolge: ```Groovy def text = "Groovy" for (ch in text){ print(ch + " ") // Ausgabe: G r o o v y } ```