const f = (arg1) => (arg2) => { /* returns something */ }
つまり、2つの引数に関してfをメモすることは可能ですか?
f(1)(2);
f(1)(3); // Cache not hit
f(4)(2); // Cache not hit
f(1)(2); // Cache hit
すべての関数にマップを渡すことはできません。あなたは次のようにすることができます:
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));
}
}
}