87 lines
2.2 KiB
Markdown
87 lines
2.2 KiB
Markdown
|
# 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
|
||
|
}
|
||
|
```
|