groovy
Memoized Functies
Zoeken…
Opgeslagen functies
Onthouden is eigenlijk een manier om de resultaten van de methode te cachen. Dit kan handig zijn wanneer een methode vaak met dezelfde argumenten wordt aangeroepen en de berekening van het resultaat tijd kost, waardoor de prestaties worden verbeterd.
Vanaf Groovy 2.2 kunnen methoden worden geannoteerd met de @Memoized
annotatie.
Stel je de volgende klasse voor:
class MemoDemo {
def timesCalculated = 0
@Memoized
def power2(a) {
timesCalculated++
a * a
}
}
Nu bij de eerste aanroep van deze methode met een nummer waarmee het nog niet eerder is aangeroepen, wordt de methode uitgevoerd:
assert power2(2) == 4
assert timesCalculated == 1
Als we het echter opnieuw noemen met hetzelfde argument:
assert power2(2) == 4
assert timesCalculated == 1
timesCalculated
is ongewijzigd gebleven, maar de methode heeft hetzelfde resultaat timesCalculated
. Noem het echter met een ander argument:
assert power2(3) == 9
assert timesCalculated == 2
resulteert in het opnieuw oproepen van de body van de methode.