在Dart中,功能是一流的。 文档告诉我们您可以创建一个如下函数的变量:
var loudify = (msg) => '!!! ${msg.toUpperCase()} !!!';
创建一个名为“loudify”的函数,它接受一个String并返回另一个String 如果我事先不知道要为变量分配哪个函数,我可以这样做:
// define the variable
var loudify;
// later on set the variable
loudify = (msg) => '!!! ${msg.toUpperCase()} !!!';
但是我如何使用可选输入以便稍后我知道变量是“function”类型并且输入String和输出String? 我会建议像这样的东西,但这不起作用(Dart编辑器告诉我“未定义的类'函数'”):
// this gives a syntax error in the Dart editor
function<String, String> loudify;
那么这里的正确语法是什么?
问候,
亨德里克
答案 0 :(得分:4)
您可以使用typedef
typedef String OneString(String x);
typedef String OneStringAndInt(String x, int y);
void main() {
//var f = (String x) => '$x';
var f = (String x, int y) => '$x$y';
if(f is OneString) {
print(f('bla'));
} else {
print(f('bla', 10));
}
}