Si è cercato di imparare di più sulla programmazione funzionale osservando la documentazione di sottolineatura e tentando di scrivere le mie versioni delle funzioni più utilizzate.Implementazione e comprensione della funzione "memoize" in underscore & lodash
Trovarsi in "memoize" - Avevo difficoltà a sistemare la mia mente intorno a esso, e ho trovato alcune informazioni in "The Good Parts" di Crockford.
_.memoize = function(func) {
// 'cache' object is used to hold the result of the memoized fn's call
var cache = {};
var recur = function(n) {
var result = cache[n];
if (typeof result === 'undefined') {
result = func.apply(this, arguments);
cache[n] = result;
}
return result;
}
return recur;
};
La prego di aiutarmi a capire se il mio uso di .Applicare era ancora necessario e se non v'è alcun miglioramento nucleo posso fare a questo codice? Apprezzo davvero l'aiuto!
Sì, l'uso di apply è necessario perché non si è a conoscenza di quanti argomenti 'func' avrà –
Quindi questo è il codice che hai scritto tu stesso? E non c'è niente che non capisci a riguardo? O quali parti del trattino basso non capisci? – Bergi
@Bergi - Sono riuscito ad arrivare a questa soluzione, ma volevo vedere se c'erano errori o miglioramenti che potevo fare. Come ho detto di seguito, ho cambiato l'uso di typeof e ho fatto affidamento su hasOwnProperty. Tuttavia, sto cercando di capire come evitare che la funzione memorizzata funzioni più volte del necessario. – tsaiDavid