gpt4 book ai didi

actionscript-3 - 如何在 ActionScript 中重载函数?

转载 作者:行者123 更新时间:2023-12-04 01:38:42 26 4
gpt4 key购买 nike

我想要一个能够接受各种类型的功能。 AS3不支持直接重载......所以我不能做以下事情:

//THIS ISN'T SUPPORTED BY AS3

function someFunction(xx:int, yy:int, someBoolean:Boolean = true){
//blah blah blah
}
function someFunction(arr:Array, someBoolean:Boolean = true){
someFunction(arr[0], arr[1], someBoolean);
}

我怎样才能解决它并且仍然有一个能够接受各种类型参数的函数?

最佳答案

如果你只想能够接受任何类型,你可以使用 *允许任何类型:

function someFunction( xx:*, yy:*, flag:Boolean = true )
{
if (xx is Number) {
...do stuff...
} else if (xx is String) {
...do stuff...
} else {
...do stuff...
}
}

如果您有大量顺序不重要的各种参数,请使用选项对象:
function someFunction( options:Object )
{
if (options.foo) doFoo();
if (options.bar) doBar();
baz = options.baz || 15;
...etc...
}

如果您有可变数量的参数,您可以使用 ... (rest) parameter :
function someFunction( ... args)
{
switch (args.length)
{
case 2:
arr = args[0];
someBool = args[1];
xx = arr[0];
yy = arr[1];
break;
case 3:
xx = args[0];
yy = args[1];
someBool = args[2];
break;
default:
throw ...whatever...
}
...do more stuff...
}

对于需要调用多个类的通用函数的情况,您应该指定每个类的通用接口(interface):
function foo( bar:IBazable, flag:Boolean )
{
...do stuff...
baz = bar.baz()
...do more stuff...
}

关于actionscript-3 - 如何在 ActionScript 中重载函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7466683/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com