智慧 + 毅力 = 无所不能

正确性、健壮性、可靠性、效率、易用性、可读性、可复用性、兼容性、可移植性...
随笔 - 991, 文章 - 0, 评论 - 27, 阅读 - 341万

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

as3的重载实现

Posted on   Bill Yuan  阅读(1816)  评论(0编辑  收藏  举报

1:使用aruments的length属性进行重载

 

复制代码
代码
function test(par1:int):void
{
    
if(arguments.length == 1)
        trace(
"重载1");
    
else if(arguments.length >1)
        trace(
"重载2");
    
else
        trace(
"重载3");
}
test(
1);
test(
1,2);
test(
1,2,3);
//--------------------

//重载1
//重载2
//重载2
复制代码

 

 

注意函数test在声明时只声明了 par1:int 一个参数,而在调用时程序连续调用了3次test,并且后两次参数与函数声明不符,多了。但编译器如果运行在标准模式下编译,是不会报错也可以运行的,这样arguments数组会扩大为你传进来参数的个数,如test(1,2,3),arguments长度就是3了,程序中如果需要用到2、3,只能通过 arguments[1]/[2]来找到多出的参数。用arguments时,注意编译器一定要运行在标准模式下;参数只能比函数声明多,不能少。

 

2:使用 ...(args) 来传入不同参数。

注意:...(args) ,前面是3点,英文模式下的3点,不多不少。args是传进来参数数组的名称,可以任意。

 

复制代码
代码
function test(...args):void
{
    
if(args.length == 1)
        trace(
"重载1");
    
else if(args.length >1)
        trace(
"重载2");
    
else
        trace(
"重载3");
}
test(
1);
test(
1,2);
test(
1,2,3);

//--------------------

//重载1
//重载2
//重载2
复制代码

 

 

当使用...args ,在程序中就不能用arguments来获取参数了,取而代之是args。...args 也可以与声明参数一起使用

 

复制代码
代码
function test(par1:int,...args):void
{
    
if(args.length == 1)
        trace(
"参数" + par1 + "  重载1  args参数:" + args);
    
else if(args.length == 2)
        trace(
"参数" + par1 + "  重载2  args参数:" + args);
    
else
        trace(
"参数" + par1 + "  重载3  args参数:" + args);
}
test(
1,1);
test(
1,2,3);
test(
1,2,3,4,5);

//---------------------

//参数1  重载1  args参数:1
//参数1  重载2  args参数:2,3
//参数1  重载3  args参数:2,3,4,5
复制代码

 

 

这样也变通模拟了函数重载,args是不需要编译器标准的无论在严谨或标准模式都可运行;args使用后arguments不能使用包括其属性;在给已声明参数赋值后,接下来无论多少个参数编译器都会将其作为数组传给args。

(评论功能已被禁用)
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示