0

クラスの宣言で、プロパティ"DeclarationMirror"に関するこれらのドキュメントを見つけました。"owner"

For a `parameter`, `local variable` or `local function` the owner is
the immediately enclosing function.

Dart ミラー ライブラリを介して次の宣言を反映する方法に関するドキュメントが見つからないため、この情報をどのように解釈するか理解できません。

  1. Local variable
  2. Local function

termsこのライブラリの実際の使用に適用されるこれらをどのように解釈すればよいですか?

  1. 将来必ず実装する必要があるが、いくつかの理由で現在実装されていない宣言について注意してください。
  2. 情報の信頼性が低く、ドキュメントとして認識できません。

私はアイテム#1にもっと興味があります。

これが実際のドキュメントであり、信頼できない情報ではない場合、これらのドキュメントに基づいた情報はどこにありますか?

つまり、ドキュメントに記載されている情報local variableslocal functions ミラー化された宣言はどこにありますか?

I am about how to reflect them from their owners.

その目的を考えると、公式ドキュメントについて正確に質問したことを願っています。

これを説明する別の方法があれば、それを聞いてうれしいです。

PSこの質問は、公式ドキュメントに他に利用可能な情報がないという理由で尋ねました。

PS

コードのサンプル:

var clazz = reflectClass(MyClass);
var method = clazz.declarations[#myMethod];
// How to reflect mentioned in documentation local variable?
var localVariable = method.declarations[#myLocalVariable];

コードのサンプルは単なる例ですが、公式ドキュメントはより法律に似ています。明確に解釈する必要があります。

4

1 に答える 1

0

私がこれを見ると:

すぐ外側の関数は、実際にはローカル変数とローカル関数の所有者です。しかし、それはあなたが反射によってそれらをつかむことができるということを含みません.

クラスのフィールドにローカル関数を割り当てようとし、リフレクションを使用して関数を取得しようとしました。フィールドを取得しましたが、フィールドが参照する値 (ローカル関数) を取得する方法がわかりません。これは可能かもしれませんが、方法が見つかりませんでした。これが機能する場合、所有者はおそらく囲んでいる関数になります。

AFAIR 現在、リフレクションを使用してローカル メンバーにアクセスすることはできないという議論がどこかでありましたが、これについてはよくわかりません。また、関数のソースをテキストとして取得できることをどこかで見たと思います...

于 2013-12-05T16:25:44.057 に答える