gpt4 book ai didi

dart - 在这种情况下发生 'formal parameter name expected'的原因是什么?

转载 作者:行者123 更新时间:2023-12-03 03:29:35 33 4
gpt4 key购买 nike

我运行下面的代码,但出现错误,没有任何堆栈跟踪。

我的代码:

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中的其他函数。

我确认会将可选参数转发给“一个”功能...

这是对可选参数的限制之一吗?

最佳答案

我会说这是一个错误(请参阅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");
}

关于dart - 在这种情况下发生 'formal parameter name expected'的原因是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14425114/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com