99 lines
1.7 KiB
Markdown
99 lines
1.7 KiB
Markdown
# Live-Übung
|
|
|
|
## Operatoren
|
|
|
|
### 1) Gegeben ist eine Liste von Strings:
|
|
```
|
|
def words = ["Groovy", "ist", "cool"]
|
|
```
|
|
Verwende den Spread-Operator *., um eine Liste der Längen dieser Strings zu erstellen.
|
|
|
|
Lösung
|
|
```
|
|
def words = ["Groovy", "ist", "cool"]
|
|
def lengths = words*.length()
|
|
|
|
println("Längen: $lengths") // Erwartete Ausgabe: Längen: [6, 3, 4]
|
|
```
|
|
|
|
### 2) Gegeben ist eine Liste von Zahlen:
|
|
```
|
|
def numbers = [1, 2, 3, 4, 5]
|
|
```
|
|
Verwende den Spread-Operator *., um eine Liste der Quadrate dieser Zahlen zu erstellen.
|
|
|
|
Lösung
|
|
```
|
|
def numbers = [1, 2, 3, 4, 5]
|
|
|
|
def squares = numbers*.multiply(numbers)
|
|
|
|
println("Quadrate: $squares") // Erwartete Ausgabe: Quadrate: [1, 4, 9, 16, 25]
|
|
```
|
|
|
|
## Schleifen und Bedingungen
|
|
|
|
Schreibe eine
|
|
|
|
a) while-Schleife
|
|
|
|
b) for-Schleife
|
|
|
|
, die die Fakultät einer gegebenen Zahl berechnet und ausgibt.
|
|
|
|
Lösung
|
|
a)
|
|
```
|
|
def zahl = 5
|
|
def ergebnis = 1
|
|
|
|
for (int i = 1; i <= zahl; i++) {
|
|
ergebnis *= i
|
|
}
|
|
|
|
println("Die Fakultät von $zahl ist: $ergebnis")
|
|
```
|
|
|
|
b)
|
|
```
|
|
def zahl = 5
|
|
def ergbenis = 1
|
|
def i = 1
|
|
|
|
while (i <= zahl) {
|
|
ergebnis *= i
|
|
i++
|
|
}
|
|
|
|
println("Die Fakultät von $zahl ist: $ergebnis")
|
|
```
|
|
|
|
|
|
|
|
## Closures
|
|
|
|
Schreibe eine Funktion makeCounter, die eine Closure zurückgibt, die jedes Mal, wenn sie aufgerufen wird, um 1 erhöht.
|
|
```
|
|
def makeCounter() {
|
|
//TODO
|
|
}
|
|
|
|
def counter = makeCounter()
|
|
println(counter()) // Erwartete Ausgabe: 1
|
|
println(counter()) // Erwartete Ausgabe: 2
|
|
println(counter()) // Erwartete Ausgabe: 3
|
|
```
|
|
|
|
Lösung
|
|
```
|
|
def makeCounter() {
|
|
def count = 0
|
|
return {++count}
|
|
}
|
|
|
|
def counter = makeCounter()
|
|
println(counter()) // Erwartete Ausgabe: 1
|
|
println(counter()) // Erwartete Ausgabe: 2
|
|
println(counter()) // Erwartete Ausgabe: 3
|
|
```
|