groovy
Funzioni memorizzate
Ricerca…
Funzioni memorizzate
Memoizing è fondamentalmente un modo per memorizzare i risultati del metodo. Questo può essere utile quando un metodo viene spesso chiamato con gli stessi argomenti e il calcolo del risultato richiede tempo, quindi aumenta le prestazioni.
A partire da Groovy 2.2, i metodi possono essere annotati con l'annotazione @Memoized
.
Immagina la seguente classe:
class MemoDemo {
def timesCalculated = 0
@Memoized
def power2(a) {
timesCalculated++
a * a
}
}
Ora alla prima chiamata di questo metodo con un numero che non è stato chiamato con prima, il metodo verrà eseguito:
assert power2(2) == 4
assert timesCalculated == 1
Tuttavia, se lo chiamiamo di nuovo con lo stesso argomento:
assert power2(2) == 4
assert timesCalculated == 1
timesCalculated
è rimasto invariato, tuttavia il metodo ha restituito lo stesso risultato. Tuttavia, chiamandolo con un argomento diverso:
assert power2(3) == 9
assert timesCalculated == 2
provoca il richiamo del corpo del metodo.
Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow