あなたのデバッガがどうあるべきか「インテリジェント」に応じて、。あなただけに沿って名前を渡すことができます。このような文脈で使用された場合、明らかにするので、名前はあなたがプログラムを書いている時点で知られているべき
DebuggerMonitor.trackVar(variable, "variable");
ます。また、インスタンス変数名を取得するには、いくつかの反射の魔法を行うことができますが、それは(彼らの名前はコンパイル時に廃棄されます)一時変数のために動作しません。
public function getVariableName(instance:*, match:*):String {
var typeDescription:XML = describeType(instance);
var variables:XMLList = typeDescription..variable;
var accessors:XMLList = typeDescription..accessor;
for each(var variable:XML in variables)
if(matchesXMLName(instance, variable, match))
return [email protected];
for each(var accessor:XML in accessors)
if(matchesXMLName(instance, accessor, match))
return [email protected];
return "No name found.";
}
private function matchesXMLName(instance:*, xml:XML, match:*):Boolean {
return match == instance[[email protected]()];
}
var varName:String = getVariableName (myObject, variable);
このような反射を使用することも、非常に高価になります頻繁に使用される場合は、型記述をキャッシュする方法を考える必要があります。
私はあなたがas3commons reflections packageをチェックアウトをお勧めします - 便利な機能の多くはそこにあります...バインディングのいくつかのタイプを作成するために使用されているため、キーワード「VAR」によって生じた混乱は
ありがとうございます。最初の方法は最も論理的なようです。 – bandaro