Actionscript 3 でリフレクションを実行しようとしているところ、問題が見つかりました。
以下の関数は、変数型 (int、Number、Boolean) のデータを受け取ります。次に、データとその型を、型に応じて何かを行うメソッドに渡します。
function aFuncWithVarAgs(... data):void
{
    for(var i:uint=0; i < data.length; i++)
    {
        var typeName:String = describeType(data[i]).@name;
        doSomethingAccordingToType(typeName, data[i]);
    }
}
問題は、私がこれを行うときです:
var aNumber:Number = 11.0;
var anInt:int = 11;
aFuncWithVarArgs(aNumber, anInt);
したがって、describeTypeは、 aNumberとanIntの両方がint型であると述べています。このような:
<type name="int" base="Object" isDynamic="false" isFinal="true" isStatic="false">
    <extendsClass type="Object"/>
    <constructor>
       <parameter index="1" type="*" optional="true"/>
    </constructor>
</type>
編集:タイプに応じて ByteArray にバイトを書き込もうとしています。上記で説明した関数を次に示します。
function doSomethingAccordingToType(typeName:String, data:Object):void
{
    switch (typeName)
    {
        case "Number":
             bytes.writeDouble(data);
             break;
        case "int":
             bytes.writeInt(data); 
             break;
        ...
    }
}
編集:繰り返しますが、問題は、たとえば 9.0 または任意の丸め浮動小数点数がある場合、データを受け取った場所でデータを読み取るときに問題が発生するよりも、double または float の代わりに整数が書き込まれることです。 、9.0 は int ではなく double として記述されると予想されるためです。
編集: varargsで宣言された関数にパラメーターを渡すときに型を強制する方法、またはlibを使用せずにこれを行うより良い方法はありますか?
乾杯!