Поиск…


Синтаксис

  • closure.memoize ()
  • closure.memoizeAtMost (п)
  • closure.memoizeAtLeast (п)
  • close.memoizeBetween (n, m)

замечания

Memoization - это метод кэширования результата вызова закрытия. Функция memoize, примененная к закрытию, возвращает новое закрытие, возвращаемое значение которого кэшируется в соответствии с его входными параметрами. Кэшами, используемыми для трех измененных вариантов методов memoization, являются кеши LRU, то есть наименее недавно используемый элемент сначала удаляется из кеша.

Простое напоминание

def count = 0

nonmemoized = { long n -> println "nonmemoized: $n"; count++ }

nonmemoized(1)
nonmemoized(2)
nonmemoized(2)
nonmemoized(1)
assert count == 4


def mcount = 0

memoized = { long n -> println "memoized: $n"; mcount++ }.memoize()

memoized(1)
memoized(2)
memoized(2)
memoized(1)
assert mcount == 2


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow