从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
定义。 n
用madeAdder
声明,而i
用lambda表达式声明。
这样,makeAdder(2)
本质上将返回新函数(num i) => 2 + i
,该函数设置为add2
的值。
然后将其称为add2(3)
,它将n + i
评估为2 + 3
,从而得出5
。
这也是currying的示例:
madeAdder(2)(3); // 5