2012-02-16 13 views
2

docsf.call.apply(arguments)を使用すると言いますが、それはオブジェクトメソッドでのみ機能し、機能ではないようです。DartでLISP(適用)を行うにはどうすればよいですか?

testapply.dart:

#!/usr/bin/env dart 

say(a, b, c) { 
    print("${a}!"); 
    print("${b}!"); 
    print("${c}!"); 
} 

main() { 
    var args = [1, 2, 3]; 
    say.call.apply(args); 
} 

トレース:

$ dart testapply.dart 
'/Users/andrew/Desktop/testapply.dart': Error: line 11 pos 2: Unresolved identifier 'Function 'say': static.' 
    say.call.apply(args); 
^ 

は、オブジェクトを使用せずにLISP (apply f args)を行う方法はありますか?

また、f.call.apply(arguments)を使用して適用できるように、オブジェクト内の任意の関数を動的にラップする方法がありますか?

また、ダーツカレーはできますか?あなたが参照するドキュメントのページは言う

+0

だけで直感として、これらの作業のいずれかを行うことが? 1. say.apply(args) '2. say(* args)' –

+0

@ ChrisJester-Young Nope、ありがとう。 – mcandre

+0

巨大なバマー。スター表記は、PythonとRubyで使用されているものなので、試してみる価値がありました。しかたがない。 –

答えて

3

この機能はまだ実装されていませんが、ダートプログラミング言語仕様のバージョン0.07の一部として指定されています。それはかなりの時間がかかるかもしれませんが、当然のことながら私たちの実装への道を見いだすことを望みます。

それはか問題ではないかもしれない...

関連する問題