partial method
Creates a new VarArgsFunction with pre-filled arguments.
This is similar to partial application in functional programming:
var greet = VarArgsFunction<String>((args, kwargs) {
var name = args.isNotEmpty ? args[0] : 'Guest';
var greeting = kwargs['greeting'] ?? 'Hello';
return '$greeting, $name!';
});
var greetJohn = greet.partial(['John']);
print(greetJohn()); // Outputs: Hello, John!
var sayHi = greet.partial([], {'greeting': 'Hi'});
print(sayHi('Alice')); // Outputs: Hi, Alice!
Implementation
VarArgsFunction<T> partial(
[List<dynamic> preArgs = const [],
Map<String, dynamic> preKwargs = const <String, dynamic>{}]) {
return VarArgsFunction<T>((args, kwargs) {
final combinedArgs = [...preArgs, ...args];
final combinedKwargs = {...preKwargs, ...kwargs};
return callback(combinedArgs, combinedKwargs);
});
}