返回匿名函数的类型

saf*_*f32 11 dart

我正在阅读有关dart的内容,有人认为让我感到困惑的是匿名函数的语法.具体来说,如何为此类函数指定返回值的类型.

例如,请考虑以下事项:

var f = (int x) {return x + 1;};
Run Code Online (Sandbox Code Playgroud)

在这个例子中,我声明参数的类型xint.我怎么能明确地说该函数返回一个int?我知道编译器可能会使用类型推断来解决这个问题,但我想明确指定类型以防止在编写更复杂的函数时返回错误类型的值.

Mat*_*tia 10

你可以这样做:

int Function(int x) f = (int x) {return 1 + x;};
String Function(String x, String y) concatenate = (String x, String y) {return '$x$y';};
Run Code Online (Sandbox Code Playgroud)

编辑:这是一种使用类型转换的简单方法:

int f = (int x) {return x + 1;} as int;
Run Code Online (Sandbox Code Playgroud)

  • 最后一个例子不再有效——如果曾经有效的话 (2认同)

Kev*_*ore 5

您可以像常规函数一样声明匿名的内联函数

int count(int a, int b) {
  int innerThing(int c, int d) => c + d;

  return innerThing(a, b);
}
Run Code Online (Sandbox Code Playgroud)

这可能会更容易.

  • 根据定义,这不是匿名的,因为名称部分是必需的。这是一个很好的解决方法,但它没有回答所提出的问题。 (5认同)