Actionscript 3 如何使函数在ActionScript 3中接受多个参数类型?

Actionscript 3 如何使函数在ActionScript 3中接受多个参数类型?,actionscript-3,types,parameters,arguments,Actionscript 3,Types,Parameters,Arguments,有人能告诉我如何在ActionScript3.0中创建一个如下所示的函数吗 function test(one:int){ trace(one);} function test(many:Vector<int>){ for each(var one:int in many){ test(one); } } 函数测试(one:int){trace(one);} 功能测试(多:向量){ 对于每个(var-one:int-in-many){test(one);} } 如果使用矢量

有人能告诉我如何在ActionScript3.0中创建一个如下所示的函数吗

function test(one:int){ trace(one);}

function test(many:Vector<int>){
  for each(var one:int in many){ test(one); }
}
函数测试(one:int){trace(one);}
功能测试(多:向量){
对于每个(var-one:int-in-many){test(one);}
}
如果使用
矢量
,这也应适用:

function test(many:Vector.<*>):void {
  //now many can be Vector with any type.           
}
功能测试(多:向量):无效{
//现在很多可以是任何类型的向量。
}

您可以使用星号,
关键字:

function test(param:*):void
{
    if(param is int)
    {
        // Do stuff with single int.
        trace(param);
    }

    else if(param is Vector.<int>)
    {
        // Vector iteration stuff.
        for each(var i:int in param)
        {
            test(i);
        }
    }

    else
    {
        // May want to notify developers if they use the wrong types. 
        throw new ArgumentError("test() only accepts types int or Vector.<int>.");
    }
}
功能测试(参数:):无效
{
if(参数为int)
{
//用单int做一些事情。
跟踪(参数);
}
else if(参数为向量)
{
//向量迭代的东西。
对于每个(参数中的变量i:int)
{
试验(i);
}
}
其他的
{
//如果开发人员使用了错误的类型,可能需要通知他们。
抛出新的ArgumentError(“test()只接受int或Vector..”类型);
}
}
与拥有两个独立的、清晰标记的方法相比,这很少是一个好方法,因为如果没有特定的类型要求,很难判断该方法的意图是什么

我建议一套更清晰的方法,适当命名,例如

function testOne(param:int):void
function testMany(param:Vector.<int>):void 
函数testOne(param:int):void
函数testMany(参数:Vector.):void

在这种特殊情况下,论点可能是有用的。通过这种方式,您可以允许一个或多个int,并且还可以为其他人(以及您自己以后)提供更多的可读性,以了解该方法的功能。

AS3中不支持构造函数重载,但是您可以使用泛型类型参数函数测试(foo::):void{谢谢。如果可以的话,我想让我的FlashDevelop解析参数类型,但我要为它生成两个函数。@Elonoa现实地说,你应该为你做任何适合你的事情。如果你自己工作,并且你有信心能够回忆起你的函数在这条轨道上所做的事情,那么它就很好了。如果你在很多大型项目上工作nd经常会有其他人像我一样参与更新,那么清晰性是非常重要的,你可能应该有单独的方法。此外,如果你使用FlashDevelop,这里是一个很好的地方,可以利用代码暗示使用你自己的注释。
function testOne(param:int):void
function testMany(param:Vector.<int>):void