수색…


통사론

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

비고

Memoization은 클로저 호출의 결과를 캐싱하는 방법입니다. 클로저에 적용된 memoize 함수는 반환 값이 입력 매개 변수에 따라 캐시되는 새 클로저를 반환합니다. 세 가지 수정 된 메모 방법의 변형에 사용되는 캐시는 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