16

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();
}

言語ツアーやAPIでは見つかりませんでした。このようなことをする他の方法はありますか?

前もって感謝します。

4

2 に答える 2

18

関数の名前を変数に保存して後で呼び出すには、リフレクションが Dart に到着するまで待つ必要があります (またはnoSuchMethodで創造的になる)。ただし、JavaScript のように関数を変数に直接格納することはできます

main() {
  var f = (String s) => print(s);
  f("hello world");
}

また、それらをインライン化することもできます。これは、再利用を行う場合に役立ちます。

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

保存された関数は、他の関数に渡すことができます

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

doWork(f(String s)) {
   f("hello world");
}
于 2012-04-24T20:36:54.237 に答える