作为 Dart文档 describe
,因为它是纯OOP语言,所以Functions
也是object
。
这可以在JS这样完成:
function functionReturningFunctionJS() {
return function functionReturnedByFunctionJS() {
return "This is function returned by function";
}
}
但是我无法从n dart这样的函数返回函数:
Function functionReturningFunctionDart() {
return functionReturnedByFunctionDart(){
return "This is function Returned By function";
}
}
正确的方法是什么?
答案 0 :(得分:4)
您可以返回函数文字或包含函数的变量,但不能返回函数声明。要返回函数声明,可以将其分配给局部变量(将其撕掉)然后返回。
// OK
String Function() makeFunction() {
return () {
return 'Hello';
};
}
// Also OK
String Function() makeFunction2() {
String myInnerFunction() {
return 'Hello';
}
final myFunction = myInnerFunction; // make a tear-off.
return myFunction;
}
您可以像这样调用函数:
var abc = makeFunction2();
print(abc());
答案 1 :(得分:4)
请参考下面的add函数,该函数返回另一个函数(或闭包)。
void main() {
Function addTen = add(10);
print(addTen(5)); //15
print(add(10)(5)); //15
}
Function add(int a) {
int innerFunction(b) {
return a + b;
}
return innerFunction;
}
具有匿名功能:
void main() {
Function addTen = add(10)
print(addTen(5)); //15
print(add(10)(5)); //15
}
Function add(int a) {
return (b) => a + b;
}