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