在Dart中将函数/方法赋值给变量

Dav*_*utz 6 dart

Dart是否支持变量函数/方法的概念?所以通过存储在变量中的名称来调用方法.

例如在PHP中,这不仅可以用于方法:

// With functions...
function foo()
{
    echo 'Running foo...';
}

$function = 'foo';
$function();

// With classes...
public static function factory($view)
{
    $class = 'View_' . ucfirst($view);
    return new $class();
}
Run Code Online (Sandbox Code Playgroud)

我没有在语言导览或API中找到它.还有其他方法可以做这样的事吗?

提前致谢.

Lar*_*ann 9

要将函数的名称存储在变量中并稍后调用它,您必须等到反射到达Dart(或使用noSuchMethod 获得创意).但是,您可以将函数直接存储在JavaScript中的变量中

main() {
  var f = (String s) => print(s);
  f("hello world");
}
Run Code Online (Sandbox Code Playgroud)

甚至可以内联它们,如果你正在做的话会派上用场:

main() {
   g(int i) {
      if(i > 0) {
         print("$i is larger than zero");
         g(i-1);
      } else {
         print("zero or negative");
      } 
   }
   g(10);
}
Run Code Online (Sandbox Code Playgroud)

然后,存储的函数可以传递给其他函数

main() {
   var function;
   function = (String s) => print(s);
   doWork(function);
}

doWork(f(String s)) {
   f("hello world");
}
Run Code Online (Sandbox Code Playgroud)