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.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow