2

ドキュメントにはuse と書かれていますf.call.apply(arguments)が、それは関数ではなくオブジェクト メソッドに対してのみ機能するようです。

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);
 ^

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

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

あるいは、ダートカレーはできますか?

4

1 に答える 1

3

あなたが参照するドキュメントページには、

この機能はまだ実装されていませんが、Dart プログラミング言語仕様のバージョン 0.07 の一部として指定されています。かなり時間がかかるかもしれませんが、そのうち実装に反映されることを願っています。

それが問題かもしれませんし、そうでないかもしれません...

于 2012-02-16T17:26:46.973 に答える