我运行下面的代码,我得到一个没有任何堆栈跟踪的错误。
我的代码:
typedef Check<T>(T value, [onError(T value)]);
main () {
List<Check> checks = [
(str) => str != null,
(str) => !str.isEmpty
];
Check<String> doCheck = (String value, [onError(String)]) {
checks.forEach((Check check) {
if (?onError) {
check(value, onError);
} else {
check(value);
}
});
};
doCheck("10");
}
而且,我得到的错误。
file:///..()../sample.dart': Error: line 11 pos 12: formal parameter name expected
if (?onError) {
我想将onError
作为doCheck
函数中的可选参数,并将此参数传递给checks
中的其他函数。
我确认将一个可选参数转发给'one'函数......
这是对可选参数的限制吗?
答案 0 :(得分:2)
我想说这是一个错误(见issue 8007)。要解决它,您必须使用临时变量:
typedef Check<T>(T value, [onError(T value)]);
main () {
List<Check> checks = [
(str) => str != null,
(str) => !str.isEmpty
];
Check<String> doCheck = (String value, [onError(String)]) {
final isOnErrorPresent = ?onError;
checks.forEach((Check check) {
if (isOnErrorPresent) {
check(value, onError);
} else {
check(value);
}
});
};
doCheck("10");
}