咖喱函数的类型签名

时间:2018-09-28 04:13:04

标签: dart

如何在Dart中为咖喱函数添加类型签名?

在此示例中,我想在此处向功能Function(int) => Function(int) => String type添加f签名:

void main() {
  Function f = (int a) => (int b) => "$a + $b";
}

1 个答案:

答案 0 :(得分:4)

您可以使用ReturnType Function(ParamType paramName)之类的语法作为函数的类型。

在您的情况下:

void main() {
  String Function(int) Function(int) f = (int a) => (int b) => "$a + $b";
}

如果您需要在多个地方使用此类型,也可以使用typedef

typedef MyFunction = String Function(int) Function(int);
void main() {
  MyFunction f = (int a) => (int b) => "$a + $b";
}

请注意,您可以省略lambda中的类型,因为使用类型化函数,推断会知道参数是整数。

typedef MyFunction = String Function(int) Function(int);
void main() {
  String Function(int) Function(int) f1 = (a) => (b) => "$a + $b";
  MyFunction f2 = (a) => (b) => "$a + $b";
}