这个函数应该使用给定的函数transform来转换列表的每个元素:
void _doSomething(List<Something> numbers, [transform(Something element)]) {...}
由于我不想在
transform
不执行任何操作时跳过此方法,因此我想为 transform
方法提供默认值,如下所示:
void _doSomething(List<Something> numbers,
[transform(Something element) = (v) => v]) {...}
不幸的是,编辑告诉我
预期持续预期
是否有一些解决方法或根本不可能(或根本不应该这样做)?
如果你想初始化一个函数参数,它也是你的类的一个字段,我建议:
class MyClass{
Function myFunc;
MyClass({this.myFunc = _myDefaultFunc}){...}
static _myDefaultFunc(){...}
}
或更适合:
typedef SpecialFunction = ReturnType Function(
FirstParameterType firstParameter,
SecondParameterType secondParameter);
class MyClass{
SpecialFunction myFunc;
MyClass({this.myFunc = _myDefaultFunc}){...}
static ReturnType _myDefaultFunc(FirstParameterType firstParameter,
SecondParameterType secondParameter){...}
}
将默认参数写在方括号内
[]
DummyFunctin(String var1, int Var2,[ String var3 = "hello", double var4 = 3.0, List<int> var5 = [2,4,5,6],] ){
// some calculation
// return something
}
DART 备忘单 适用于 JavaScript 或 TypeScript 开发人员
您可以将默认函数定义为私有方法:
_defaultTransform(Something v) => v;
void _doSomething(List<Something> numbers,
[transform(Something element) = _defaultTransform]) {...}
或者像这样检查参数:
void _doSomething(List<Something> numbers, [transform(Something element)]) {
if (!?transform) transform = (v) => v;
...
}
或者像Ladicek建议的那样:
void _doSomething(List<Something> numbers, [transform(Something element)]) {
transform ??= (v) => v;
...
}