Szukaj…


Zapamiętane funkcje

Zapamiętywanie jest w zasadzie sposobem buforowania wyników metody. Może to być przydatne, gdy metoda jest często wywoływana z tymi samymi argumentami, a obliczenie wyniku zajmuje czas, zwiększając w ten sposób wydajność.

Począwszy od Groovy 2.2, metody mogą być @Memoized adnotacją @Memoized adnotacja.

Wyobraź sobie następującą klasę:

class MemoDemo {
  def timesCalculated = 0

  @Memoized
  def power2(a) {
    timesCalculated++
    a * a
  }
}

Teraz przy pierwszym wywołaniu tej metody z numerem, z którym nie była wcześniej wywoływana, metoda zostanie wykonana:

assert power2(2) == 4
assert timesCalculated == 1

Jeśli jednak wywołamy to ponownie z tym samym argumentem:

assert power2(2) == 4
assert timesCalculated == 1

timesCalculated pozostał niezmieniony, ale metoda zwróciła ten sam wynik. Jednak nazywając to innym argumentem:

assert power2(3) == 9
assert timesCalculated == 2

powoduje ponowne wywołanie treści metody.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow