groovy-lecture/skript/schleifen.md

2.2 KiB

Schleifen

While-Schleife

Syntax Kopfgesteuerte while-Schleife

def y = 0
while (y < 5){
    print(y + " ") // Ausgabe: 1 2 3 4 
    y++
}

for-Schleife

Syntax der for-Schleife wie in Java

 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.

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.

def map = [name: "Thomas", nachname: "Smits"]
map.each {key, value -> println "$key: $value"} // Ausgabe: name: Thomas nachname: Smits

for-in Schleife

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:

 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:

def list = [1, 2, 3, 4, 5]
for (element in list){
    print element + " " // Ausgabe: 1 2 3 4 5
 }

über eine Array:

def arr = ['a', 'b', 'c']
for (ch in arr){
     print (ch + " ") // Ausgabe: a b c
 }

Über eine Map:

 def map = [name: "Alice", age: 18]
 for (entry in map){
    print(${entry.key}: ${entry.value}) // Ausgabe: name: Alice age: 18
}

Über eine Zeichenfolge:

 def text = "Groovy"
 for (ch in text){
    print(ch + " ") // Ausgabe: G r o o v y
 }