memo8<A, B, C, D, E, F, G, H, R> function
Func8<A, B, C, D, E, F, G, H, R>
memo8<A, B, C, D, E, F, G, H, R>(
- Func8<
A, B, C, D, E, F, G, H, R> func
Checks 8 arguments for equality with ==
operator and returns the cached
result if it was not changed.
Implementation
Func8<A, B, C, D, E, F, G, H, R> memo8<A, B, C, D, E, F, G, H, R>(
Func8<A, B, C, D, E, F, G, H, R> func) {
late A prevArgA;
late B prevArgB;
late C prevArgC;
late D prevArgD;
late E prevArgE;
late F prevArgF;
late G prevArgG;
late H prevArgH;
late R prevResult;
bool isInitial = true;
return ((A argA, B argB, C argC, D argD, E argE, F argF, G argG, H argH) {
if (!isInitial &&
argA == prevArgA &&
argB == prevArgB &&
argC == prevArgC &&
argD == prevArgD &&
argE == prevArgE &&
argF == prevArgF &&
argG == prevArgG &&
argH == prevArgH) {
return prevResult;
} else {
prevArgA = argA;
prevArgB = argB;
prevArgC = argC;
prevArgD = argD;
prevArgE = argE;
prevArgF = argF;
prevArgG = argG;
prevArgH = argH;
prevResult = func(argA, argB, argC, argD, argE, argF, argG, argH);
isInitial = false;
return prevResult;
}
});
}