这个函数应该用给定的函数转换来转换列表的每个元素:
void _doSomething(List<Something> numbers, [transform(Something element)]) {...}
Run Code Online (Sandbox Code Playgroud)
由于我不想在transform不应执行任何操作时跳过此方法,因此我想为该transform方法提供一个默认值,如下所示:
void _doSomething(List<Something> numbers,
[transform(Something element) = (v) => v]) {...}
Run Code Online (Sandbox Code Playgroud)
不幸的是,编辑告诉我
预期常数预期
是否有一些解决方法或根本不可能(或根本不应该这样做)?
小智 6
如果你想初始化一个函数参数,它也是你的类的一个字段,我建议:
class MyClass{
Function myFunc;
MyClass({this.myFunc = _myDefaultFunc}){...}
static _myDefaultFunc(){...}
}
Run Code Online (Sandbox Code Playgroud)
或更适合:
typedef SpecialFunction = ReturnType Function(
FirstParameterType firstParameter,
SecondParameterType secondParameter);
class MyClass{
SpecialFunction myFunc;
MyClass({this.myFunc = _myDefaultFunc}){...}
static ReturnType _myDefaultFunc(FirstParameterType firstParameter,
SecondParameterType secondParameter){...}
}
Run Code Online (Sandbox Code Playgroud)
您可以将默认函数定义为私有方法:
_defaultTransform(Something v) => v;
void _doSomething(List<Something> numbers,
[transform(Something element) = _defaultTransform]) {...}
Run Code Online (Sandbox Code Playgroud)
或者像这样检查参数:
void _doSomething(List<Something> numbers, [transform(Something element)]) {
if (!?transform) transform = (v) => v;
...
}
Run Code Online (Sandbox Code Playgroud)
或者像Ladicek建议的那样:
void _doSomething(List<Something> numbers, [transform(Something element)]) {
transform ??= (v) => v;
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5446 次 |
| 最近记录: |