groovy
Zapamiętane funkcje
Szukaj…
Zapamiętaj na zamknięciach
Od Groovy 1.8 na zamknięciach dodano wygodną memoize()
:
// normal closure
def sum = { int x, int y ->
println "sum ${x} + ${y}"
return x + y
}
sum(3, 4)
sum(3, 4)
// prints
// sum 3 + 4
// sum 3 + 4
// memoized closure
def sumMemoize = sum.memoize()
sumMemoize(3, 4)
// the second time the method is not called
// and the result it's take from the previous
// invocation cache
sumMemoize(3, 4)
// prints
// sum 3 + 4
Zapamiętaj metody
Ponieważ Groovy 2.2 groovy.transform.Memoized
adnotacja jest dodawana do wygodnych metod zapamiętywania po prostu dodając adnotację @Memoized
:
import groovy.transform.Memoized
class Calculator {
int sum(int x, int y){
println "sum ${x} + ${y}"
return x+y
}
@Memoized
int sumMemoized(int x, int y){
println "sumMemoized ${x} + ${y}"
return x+y
}
}
def calc = new Calculator()
// without @Memoized, sum() method is called twice
calc.sum(3,4)
calc.sum(3,4)
// prints
// sum 3 + 4
// sum 3 + 4
// with @Memoized annotation
calc.sumMemoized(3,4)
calc.sumMemoized(3,4)
// prints
// sumMemoized 3 + 4
Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow