groovy
Памятные функции
Поиск…
Памятные функции
Memoizing - это в основном способ кэширования результатов метода. Это может быть полезно, когда метод часто вызывается с теми же аргументами, и вычисление результата требует времени, что увеличивает производительность.
Начиная с Groovy 2.2, методы могут быть записаны с @Memoized
аннотации @Memoized
.
Представьте себе следующий класс:
class MemoDemo {
def timesCalculated = 0
@Memoized
def power2(a) {
timesCalculated++
a * a
}
}
Теперь при первом вызове этого метода с номером, с которым он не был вызван раньше, метод будет выполнен:
assert power2(2) == 4
assert timesCalculated == 1
Однако, если мы снова назовем это тем же аргументом:
assert power2(2) == 4
assert timesCalculated == 1
timesCalculated
остался неизменным, но метод возвратил тот же результат. Однако, называя это другим аргументом:
assert power2(3) == 9
assert timesCalculated == 2
приводит к тому, что тело метода снова вызвано.
Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow