dart - 如何为函数类型的可选位置参数设置默认值?
问题描述
我将函数作为可选参数传递给构造函数,但我无法分配默认值。
void main() {
Person p = Person();
print(p.foo('Hello'));
}
class Person {
final String Function(String) foo;
Person({this.foo});
}
现在尝试分配默认值:Person({this.foo = (val) {return val;});
产生错误:Error: Not a constant expression.
我知道参数必须是const
,但使用const
或什至在static
前面(val) {return val;}
不起作用。
有谁知道如何解决这个问题?
解决方案
你可以试试这个:
void main() {
Person pLower = Person(foo: (a) => a.toLowerCase());
print(pLower.foo('Hello'));
Person pDefault = Person();
print(pDefault.foo('Hello'));
}
class Person {
static String defaultFoo(String a) => a.toUpperCase();
final String Function(String) foo;
Person({this.foo = defaultFoo});
}
输出
hello
HELLO
推荐阅读
- r - 在 R 中预测时自动绘图功能出错
- mysql - 向查询结果添加条件额外字段
- python - ValueError: 层序号_3 的输入 0 与层不兼容:
- variables - 我可以将 CMake 变量设置为布尔表达式的结果吗?
- python - 有没有办法在烧瓶中添加多个变量(变量规则)
- javascript - 如何在 Node.js 的异步函数之外使用变量?
- flutter - 尝试在 Mac 上运行我的颤振应用程序时出现此错误
- c++ - 如何在 python 中保存经过训练的机器学习模型并将其加载到 C++ 中进行预测?
- c# - C# SqlDataReader,读取类中的多个字符串
- xcode - 我是否必须在 Xcode 11.5 中手动设置框架路径?