groovy
Stängning Memoize metoder
Sök…
Syntax
- closure.memoize ()
- closure.memoizeAtMost (n)
- closure.memoizeAtLeast (n)
- stängning.memoizeBetween (n, m)
Anmärkningar
Memoization är en metod för att cache-ringa resultatet av en nedläggning. Memoize-funktionen som används på en stängning returnerar en ny stängning vars returvärde cachelagras enligt dess ingångsparametrar. Cacharna som används för de tre finjusterade varianterna av memoiseringsmetoder är LRU-cachar, det är det minst nyligen använda elementet som tas bort från cachen först.
Enkel memoization
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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow