我知道Function类可以作为参数传递给另一个函数,如下所示:
void doSomething(Function f) {
f(123);
}
但是有没有办法约束参数和函数参数的返回类型呢?
例如,在本例中,f
直接被一个整数调用,但如果它是一个接受不同类型的函数呢?
我try 将其作为Function<Integer>
传递,但函数不是参数类型.
有没有其他方法可以指定作为参数传递的函数的签名?
我知道Function类可以作为参数传递给另一个函数,如下所示:
void doSomething(Function f) {
f(123);
}
但是有没有办法约束参数和函数参数的返回类型呢?
例如,在本例中,f
直接被一个整数调用,但如果它是一个接受不同类型的函数呢?
我try 将其作为Function<Integer>
传递,但函数不是参数类型.
有没有其他方法可以指定作为参数传递的函数的签名?
DART V1.23添加了用于编写函数类型的新语法,该语法也可以内联工作.
void doSomething(Function(int) f) {
f(123);
}
与函数参数语法相比,它的优势在于,您还可以将其用于变量或任何您想要编写类型的地方.
void doSomething(Function(int) f) {
Function(int) g = f;
g(123);
}
var x = <int Function(int)>[];
int Function(int) returnsAFunction() => (int x) => x + 1;
int Function(int) Function() functionValue = returnsAFunction;