memoized method
Creates a memoized version of this function that caches results.
This is useful for expensive computations:
var fibonacci = VarArgsFunction<int>((args, _) {
int n = args[0];
if (n <= 1) return n;
return fib(n - 1) + fib(n - 2);
}).memoized();
print(fibonacci(30)); // Fast, even for large values
Implementation
VarArgsFunction<T> memoized() {
final cache = <String, T>{};
return VarArgsFunction<T>((args, kwargs) {
// Create a cache key from the arguments
final key = '${args.toString()}|${kwargs.toString()}';
if (!cache.containsKey(key)) {
cache[key] = callback(args, kwargs);
}
return cache[key]!;
});
}