記憶功能
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
導致該方法的主體再次被呼叫。