0

コールバックを受け入れる関数を設定した場合:

function loadSomething(path:String, callback:Function):void;

そして、そのコールバックは、ロードされた情報を表す String など、特定のタイプを受け入れる必要があります。

function onLoaded(response:String):void;

// Load some data into onLoaded.
loadSomething("test.php", onLoaded);

コールバックに使用される関数を評価し、指定された量の引数があり、引数が正しい型を受け入れることを確認することは可能ですか? 例えば

function broken(arg:Sprite):void;

// This should throw an error.
loadSomething("test.php", broken);
4

2 に答える 2

2

不必要なオーバーヘッドが発生するため、この種のチェックをわざわざ行う必要はないと思います。コールバックを実行するときに、単純に例外をスローできます。

try {
    doCallback(response);
} catch(e:*) {
    trace('Incompatible callback');
}

本当にチェックしたい場合は、リフレクションを使ってチェックできるかもしれません。XMLdescribeType(callback)から呼び出して解析するだけです。flash.utils

于 2012-07-16T03:50:59.010 に答える
-1

簡単にできることの 1 つは、次のlengthようにメソッド クロージャーでプロパティを呼び出して、受け入れ可能な引数の数を確認することです。

function some ( val1 : int, val2 : int ) : void { return; }

trace(some.length); // traces 2

AS3Commons バイトコード ライブラリを使用することも、もっと複雑な方法です。動的プロキシを試すことができます。

于 2012-07-16T09:10:37.913 に答える