# 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 ```