如何在Dart中返回函数?

时间:2018-07-24 03:31:04

标签: function dart

作为 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";
  }
} 

正确的方法是什么?

2 个答案:

答案 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;
}