我试图在、Dart、中构建一个类,以便在数学序列中进行一些操作。我期待一个序列作为、lambda表达式、或函数。当我试图构建类的构造函数时,我感到很困惑。我应该为参数和数据类型编写什么?
示例lambda表达式:
int sequence(int n) => 7+5*(n-1);
样本功能:
int fib(int n) {
if ((n == 1) || (n == 2)) {
return 1;
} else {
return fib(n - 1) + fib(n - 2);
}
}我如何将lambda表达式和函数作为参数给另一个函数?
发布于 2020-07-20 21:32:56
因此,两个方法的类型是int Function(int),这意味着它接受一个int作为参数,并输出一个int。
基本上有两种方法可以做到。一个是将该类型显式类型为参数类型,如下所示:
int sequence(int n) => 7 + 5 * (n - 1);
int generate1(int Function(int) function, int input) => function(input);
void main() {
print(generate1(sequence, 5)); // 27
}另一种方法是定义一个typedef,它将是您类型的缩写:
int fib(int n) {
if ((n == 1) || (n == 2)) {
return 1;
} else {
return fib(n - 1) + fib(n - 2);
}
}
typedef SomeFunction = int Function(int n);
int generate2(SomeFunction function, int input) => function(input);
void main() {
print(generate2(fib, 5)); // 5
}如果您对多个方法重用了更复杂的类型,typedef就会更容易。
https://stackoverflow.com/questions/63003864
复制相似问题