2012-04-24 18 views
2

ダートは可変関数/メソッドの概念をサポートしていますか?そのため、変数に格納された名前でメソッドを呼び出すことができます。 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でそれを見つけませんでした。このようなことをする他の方法はありますか?

ありがとうございます。

答えて

6

関数の名前を変数に格納し、後で呼び出すには、Dartに反映が到着するまで待つ必要があります(またはget creativenoSuchMethod)。ただし、あなたがrecusionを行っている場合に便利になるの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"); 
} 
+0

素晴らしい答えをありがとう。私はそれが私の問題を解決するのに役立つと思う。変数に関数を格納するJavascriptの方法については考えていません... –

関連する問題