如何在ActionScript 3中创建一个接受多个参数类型的函数?

时间:2013-02-26 21:36:29

标签: 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); }
}

2 个答案:

答案 0 :(得分:7)

您可以使用星号和is关键字:

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>.");
    }
}

这很少是一种比使用两种明确标记的方法更好的方法,因为如果没有特定的类型要求,很难说这些方法的意图是什么。

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

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

在这种特殊情况下可能有用的东西是...rest参数。这样,您可以允许一个或多个整数,并为其他人(以及稍后您自己)提供更多的可读性,以了解该方法的作用。

答案 1 :(得分:1)

function test(many:*):void {
  //now many can be any type.
}

如果使用Vector,这也应该有效:

function test(many:Vector.<*>):void {
  //now many can be Vector with any type.           
}