谁能告诉我如何在 ActionScript3.0 中创建一个像下面这样工作的函数?
function test(one:int){ trace(one);}
function test(many:Vector<int>){
for each(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); }
}
您可以使用星号和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
参数。这样,您可以允许一个或多个整数,并且还为其他人(以及以后的您自己)提供更多的可读性,以了解该方法的作用。
function test(many:*):void {
//now many can be any type.
}
在使用的情况下Vector
,这也应该有效:
function test(many:Vector.<*>):void {
//now many can be Vector with any type.
}