http://www.dartlang.org/language-tour/#functions:

Function makeAdder(num n) {
  return (num i) => n + i;
}

main() {
  var add2 = makeAdder(2);
  print(add2(3)); // 5
}

你能把它翻译成英文吗?

困扰我的是不了解它是如何工作的。

应该是这个var add2 = makeAdder;,然后是print(add2(3));,但是它将无法工作...

最佳答案

每次对makeAdder(num n)的调用都会创建并返回一个新函数,该函数由lambda表达式(num i) => n + i定义。 nmadeAdder声明,而i用lambda表达式声明。

这样,makeAdder(2)本质上将返回新函数(num i) => 2 + i,该函数设置为add2的值。

然后将其称为add2(3),它将n + i评估为2 + 3,从而得出5

这也是currying的示例:

madeAdder(2)(3); // 5

10-02 13:25