Recherche…


Syntaxe

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

Remarques

La mémorisation est une méthode de mise en cache du résultat d'une invocation de fermeture. La fonction memoize appliquée à une fermeture renvoie une nouvelle fermeture dont la valeur de retour est mise en cache en fonction de ses paramètres d'entrée. Les caches utilisés pour les trois variantes modifiées des méthodes de mémo sont les caches LRU, c'est-à-dire que l'élément le moins récemment utilisé est d'abord supprimé du cache.

Mémo simple

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
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow