const f = (arg1) => (arg2) => { /* returns something */ }
Est-il possible de mémoriser f au regard des 2 arguments, à savoir:
f(1)(2);
f(1)(3); // Cache not hit
f(4)(2); // Cache not hit
f(1)(2); // Cache hit
Vous ne pouvez pas passer la carte à chaque fonction. Vous pouvez faire comme le suivant:
const memoize = fn => {
const cache = {};
return (...args) => {
const curriedFn = fn(...args);
return (...next) => {
const key = // generate your key
if (key in cache) return cache[key];
return (cache[key] = curriedFn(...next));
}
}
}