Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart语言中作为函数参数的Lambda表达式_Dart_Lambda_Parameters - Fatal编程技术网

Dart语言中作为函数参数的Lambda表达式

Dart语言中作为函数参数的Lambda表达式,dart,lambda,parameters,Dart,Lambda,Parameters,我正在尝试构建一个类,以便在Dart中以数学顺序进行一些操作。我期待一个序列作为lambda表达式或函数。当我试图构建类的构造函数时,我感到困惑。我应该为参数和数据类型写什么 样本lambda表达式: int序列(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); } } 如何将l

我正在尝试构建一个类,以便在Dart中以数学顺序进行一些操作。我期待一个序列作为lambda表达式函数。当我试图构建类的构造函数时,我感到困惑。我应该为参数和数据类型写什么

样本lambda表达式

int序列(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表达式和函数作为参数赋予另一个函数?

因此,您的两个方法的类型是
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
会更容易使用。

您是说这样的类型吗?