任何人都可以告訴我如何在ActionScript3.0中創建一個如下所示的函數嗎?如何在ActionScript 3中創建一個接受多個參數類型的函數?
function test(one:int){ trace(one);}
function test(many:Vector<int>){
for each(var one:int in many){ test(one); }
}
任何人都可以告訴我如何在ActionScript3.0中創建一個如下所示的函數嗎?如何在ActionScript 3中創建一個接受多個參數類型的函數?
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
參數。這樣,您可以允許一個或多個整數,併爲其他人(以及後來自己)提供更多的可讀性,以瞭解該方法的用途。
Thanks。想要讓我的FlashDevelop解析參數類型(如果可以的話),但是我要爲它創建2個函數。 – Elonoa 2013-02-27 02:20:42
@Elonoa現實的你應該爲你做任何事情。如果你正在自己的工作,並且你有信心,你可以回想起你的功能在賽道上的作用,那麼這很好。如果你在許多大型項目上工作,並且經常讓其他人像我一樣進行更新,那麼清晰度就非常重要,你應該可以使用分離的方法。 – Marty 2013-02-27 02:45:37
另外,如果您使用的是FlashDevelop,這裏是使用您自己的評論來使用代碼提示的好地方。 – Marty 2013-02-27 02:54:19
function test(many:*):void {
//now many can be any type.
}
在使用Vector
的情況下,這也應該工作:
function test(many:Vector.<*>):void {
//now many can be Vector with any type.
}
構造函數重載在AS3中不受支持,但是您可以使用泛型類型參數function test(foo:*):void { – 2013-02-26 21:39:38