7

私はこのようなものを持っています:

class MyClass
{
   static void DoSomething(arg1, arg2){...}
}

リフレクションを介して、このクラスの ClassMirror を取得できます。この時点から、具体的な静的関数を呼び出すにはどうすればよいでしょうか。

私が使用しようとしたことに注意してください:

ObjectMirror.invoke('DoSomething', [arg1, arg2]); 

最初は機能するように見えますが、複雑な型を引数として渡すことはサポートされていません。この静的関数には、引数の 1 つとして複雑な型が必要です。

理想的には、静的メソッドを表す「関数」オブジェクトを取得して、直接呼び出すことができるようにしたいと考えています。

4

1 に答える 1

17

を。現在の状況は一時的なものです。計画では、ミラー API が引数をミラーでラップします。

b. API は最終的に、関数オブジェクトの Future を提供する getProperty メソッドをサポートする可能性があります。ただし、 Function オブジェクトを直接取得することはないため、この場合は実際には何の違いもありません。

c. 核となるアイデアは、API が基本的にミラー上で機能するということです。より使いやすくするために、ミラー以外を入力として受け入れ、それらをミラーにラップする必要があります。常にミラーを返し、場合によってはこれらの先物を返します。これは、API がリモートの場合とローカルの場合で同じように機能するためです。

d. ミラーを理解するためのリソース:

  1. http://www.bracha.org/mirrors.pdf (学術論文、厳しい状況)
  2. http: /
  3. http://gbracha.blogspot.com/2010/03/through-Looking-glass-darkly.html (ミラーに関する私の古いダート前のブログ投稿)
  4. http://www.wirfs-brock.com/allen/posts/228 (Allen Wirfs-Brock のブログ。Allen は 90 年代の Smalltalk におけるミラーのパイオニアでした)
  5. http://www.wirfs-brock.com/allen/posts/245

私のブログAllen Wirf-Brock のトピックに関する投稿を検索することもできます。

于 2012-08-24T18:07:30.953 に答える