groovy-lecture/yuliya/liveuebung.md

1.7 KiB

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