如何定义类型变量" function"? (使用可选输入)

时间:2014-10-05 07:40:24

标签: syntax types dart dart-editor

在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;

那么这里的正确语法是什么?
问候,
亨德里克

1 个答案:

答案 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));
  }
}