【发布时间】:2021-04-18 03:12:28
【问题描述】:
这就是我想要实现的:
void fun({
bool Function(int i) predicate = (i) => false,
}) {
// do something with 'predicate(something)'
}
但我得到了错误:
可选参数的默认值必须是 constant.dart(non_constant_default_value)。
我能够通过以下方式解决此错误:
bool falsePredicate(int i) => false;
void fun({
bool Function(int i) predicate = falsePredicate,
}) {
// do something with 'predicate(something)'
}
但是现在问题变成了,为什么我不能像第一组代码那样直接创建一个默认的函数值呢?第一种情况和第二种情况似乎没有区别。第一种方法给出的函数怎么不是常量?
【问题讨论】:
-
这听起来像是人们想要的功能,而且应该可以实现:github.com/dart-lang/language/issues/1048
-
另一种选择是做the typical approach of taking a
nulldefault:void fun({bool Function(int i)? predicate}) { predicate ??= (i) => false; ... }。 -
如果是备用灵魂,方法需要是
static。它真的可以在没有静态的情况下工作吗?