此函数应使用给定的函数transform转换列表的每个元素:
void _doSomething(List<Something> numbers, [transform(Something element)]) {...}
由于我不希望在transform
不应该执行任何操作时跳过此方法,因此我想为此transform
方法提供默认值:
void _doSomething(List<Something> numbers,
[transform(Something element) = (v) => v]) {...}
不幸的是,编辑告诉我
预期的预期常数
是否有一些解决方法或根本不可能(或根本不应该这样做)?
答案 0 :(得分:1)
您可以将默认功能定义为私有方法:
_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)]) {
if (transform == null) transform = (v) => v;
...
}
答案 1 :(得分:1)
如果要初始化也是类的字段的Function参数,我建议:
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){...}
}