記憶功能

Memoizing 基本上是一種快取方法結果的方法。當通常使用相同的引數呼叫方法並且結果的計算需要時間時,這可能很有用,因此提高了效能。

從 Groovy 2.2 開始,可以使用 @Memoized 註釋來註釋方法。

想象一下以下類:

class MemoDemo {
  def timesCalculated = 0

  @Memoized
  def power2(a) {
    timesCalculated++
    a * a
  }
}

現在,在第一次呼叫此方法並使用之前未呼叫的數字時,將執行該方法:

assert power2(2) == 4
assert timesCalculated == 1

但是,如果我們使用相同的引數再次呼叫它:

assert power2(2) == 4
assert timesCalculated == 1

timesCalculated 保持不變,但該方法返回了相同的結果。但是,使用不同的引數呼叫它:

assert power2(3) == 9
assert timesCalculated == 2

導致該方法的主體再次被呼叫。