Ho una classe Moose con un attributo lazy_build
. Il valore di quell'attributo è una funzione di un altro attributo (non pigro).Ricostruzione di un attributo ponderato quando un attributo sottostante cambia in Alce
Supponiamo che qualcuno istanzia la classe con un valore di 42 per l'attributo richiesto. Quindi richiedono l'attributo lazy, che viene calcolato come una funzione di 42. Quindi, hanno il coraggio di cambiare il primo attributo!
Il server pigro è già stato creato, quindi il builder non verrà richiamato e l'attributo lazy non è aggiornato.
Ho una soluzione ora dove mantengo un flag "dirty" sull'attributo richiesto, e un accessor sul pigro controlla il flag dirty e lo ricostruisce se necessario.
Tuttavia, questo sembra un sacco di lavoro. C'è un modo per gestirlo all'interno di Moose, ad es. usando i tratti?
È possibile controllare le risposte di quando ho posto la stessa domanda: [Scadenza dei risultati memorizzati nella cache dei calcoli quando i valori degli attributi cambiano] (http://stackoverflow.com/questions/1775572/moose-expiring-cached-results -of-calcoli-quando-attributo-valori-cambia "Scadenza dei risultati nella cache dei calcoli quando i valori degli attributi cambiano") – clscott