Actionscript 3 在AS3中使用varargs时转换为int的数字

Actionscript 3 在AS3中使用varargs时转换为int的数字,actionscript-3,reflection,variadic-functions,Actionscript 3,Reflection,Variadic Functions,我试图对ActionScript3进行一些反思,发现了一个问题 下面的函数接收变量类型(int、Number、Boolean)的数据。然后,它将数据及其类型传递给一个方法,该方法将根据类型执行某些操作 function aFuncWithVarAgs(... data):void { for(var i:uint=0; i < data.length; i++) { var typeName:String = describeType(data[i]).@n

我试图对ActionScript3进行一些反思,发现了一个问题

下面的函数接收变量类型(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]);
    }
}
因此,DescripteType表示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>
编辑:同样,问题是当我有,比如说9.0或任何四舍五入的浮点数时,我会写一个整数而不是一个双精度或浮点数,而当我在任何地方收到数据时,我都会遇到问题,因为我希望9.0是作为双精度而不是整数来写的

EDIT:将参数传递给使用varargs声明的函数时,有没有一种方法可以强制执行类型,或者有没有一种更好的方法可以不使用lib执行此操作


干杯

如果只需要类名,则可以使用
getQualifiedClassName
而不是
descripeType

var n:Number = 11.1;
var i:int = 11;
trace(getQualifiedClassName(n));
trace(getQualifiedClassName(i));

如果只需要类名,则可以使用
getQualifiedClassName
而不是
descripeType

var n:Number = 11.1;
var i:int = 11;
trace(getQualifiedClassName(n));
trace(getQualifiedClassName(i));

是的,很奇怪。注意,它仍然是数字,如果以11.01为例初始化它,可能是flash编译器的某种优化?是的,如果它是一个整数,即使它是一个浮点数(AS中的数字),它也会被转换为int。是的@danii它可能是……但你们知道这个问题的一些替代方法,而不使用固定参数计数吗?是的,真奇怪。注意,它仍然是数字,如果以11.01为例初始化它,可能是flash编译器的某种优化?是的,如果它是一个整数,即使它是一个浮点数(AS中的数字),它也会被转换为int。是的@danii它可能是……但你们知道这个问题的一些替代方案吗,不使用固定参数计数?这很好,但在我的示例中,当您将变量传递给函数(使用varargs)时,您会收到我的错误。这很好,但在我的示例中,当您将变量传递给函数(使用varargs)时,您会收到我的错误。
var n:Number = 11.1;
var i:int = 11;
trace(getQualifiedClassName(n));
trace(getQualifiedClassName(i));