memo3<A, B, C, R> function
Checks 3 arguments for equality with ==
operator and returns the cached
result if they were not changed.
Implementation
Func3<A, B, C, R> memo3<A, B, C, R>(Func3<A, B, C, R> func) {
late A prevArgA;
late B prevArgB;
late C prevArgC;
late R prevResult;
bool isInitial = true;
return ((A argA, B argB, C argC) {
if (!isInitial &&
argA == prevArgA &&
argB == prevArgB &&
argC == prevArgC) {
return prevResult;
} else {
prevArgA = argA;
prevArgB = argB;
prevArgC = argC;
prevResult = func(argA, argB, argC);
isInitial = false;
return prevResult;
}
});
}