ActionScriptn3を利用して

Function型からその関数名取得する関数の作り方を教えてください。

//関数のオブジェクトを渡すとその関数名が返ってきます。
function getFuncName(func:function):String
{
//ここに何を書けばいいかを教えてください。
}

//関数例
function hoge()
{
}

//利用例
var name = getFuncName(hoge);
//nameには"hoge"が入る

回答の条件
  • 1人2回まで
  • 登録:2008/07/16 13:59:28
  • 終了:2008/07/16 18:40:38

ベストアンサー

id:makiton No.1

makiton回答回数23ベストアンサー獲得回数32008/07/16 18:21:50

ポイント100pt

オブジェクトから変数名などコードの情報を取得することをリフレクションといいます。

正直AS界隈にはあまり明るくないのですが、興味があったので調べてみました。

メソッドが定義されているオブジェクト(以下の例はthis)が分かっているという前提で書きました。

function hogehoge():void
{
}

function getFunctionName(o:Object, method:Function):String
{
	var methodName:String = null;
	
	var describeXML:XML = describeType(o);
	for each(var methodXML:XML in describeXML.method){
		trace(methodXML.@name+"¥n");
		if(method == this[methodXML.@name]){
			methodName = methodXML.@name;
			break;
		}
	}
	
	return methodName;
}

trace(getFunctionName(this,hogehoge));

describeTypeがミソですね。

要件を満たすものかどうかちょっと自信がないですが、一応こんな方法がある、ということで。

参考になれば幸いです。

id:zio3

ありがとうございます。

完全に自分の求めていた答えです。

2008/07/16 18:39:57

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません