サーチ…


構文

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

備考

Memoizationは、クロージャ呼び出しの結果をキャッシュする方法です。クロージャに適用されたmemoize関数は、入力パラメータに従ってキャッシュされた戻り値を持つ新しいクロージャを返します。 memoizationメソッドの3つの調整されたバリアントに使用されるキャッシュは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