`
wgcode
  • 浏览: 599794 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

as3的重载实现

 
阅读更多

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

分享到:
评论

相关推荐

    AS3语言和组件参考 for CS4

    - **事件驱动**:AS3采用事件驱动模型,通过监听和处理事件来实现交互。 2. **AS3的语法特点** - **强类型**:AS3是强类型语言,变量在声明时必须指定数据类型。 - **静态与动态类型**:支持静态类型(如int, ...

    运算符重载的部分代码

    visual basic 2005 技术内部中第六章第七节运算符重载代码。 operator部分: Module Module1 Sub Main() End Sub End Module Public Structure Fraction 'Read-Only fields Private num As Long Private ...

    java中函数重载与覆盖例子

    总结来说,函数重载和覆盖是Java中实现多态性的两种主要方式。重载允许我们在同一类中创建多个同名但参数不同的方法,而覆盖则允许子类定制父类的行为,实现特定于子类的功能。理解并熟练运用这两个概念对于编写灵活...

    as 3.0 中文手册

    4. 函数重载:一个函数可以根据传递的不同参数列表有不同的实现。 5. 静态和实例成员:`static`关键字用于定义类级别的变量和方法,而实例成员属于每个类的实例。 6. 命名空间:AS3.0引入命名空间来管理类和包的冲突...

    as3[1].0教程

    随着 Flash 的发展,ActionScript 也经历了多次重大升级,包括 AS1、AS2 和最终的 AS3。 - **特性与优势**: - **性能提升**:AS3 相比之前的版本有显著的性能改进,这得益于新的虚拟机 AVM2。 - **内存管理**:...

    Javascript实现运算符重载详解

    JavaScript中的运算符重载是一种模拟C++或C#等语言中运算符重载的方法,由于JavaScript本身不支持运算符重载,因此需要通过特定的技巧来实现。在本例中,作者采用了一种称为“代码解释”的技术,即通过编写一个函数...

    新技术培训 培训提纲.doc

    9. **AS3面向对象之多态**:讲解多态性在AS3中的应用,包括方法重载和覆盖。 10-11. **AS3设计模式**:涵盖单例模式、适配器模式、工厂模式、观察者模式和装饰模式,这些都是软件设计中的重要模式,有助于提高代码...

    ActionScript3.0中文语言参考chm版

    函数在AS3中也有重大改进,支持重载和命名参数。你可以定义多个具有相同名称但参数列表不同的函数,编译器会根据传入的参数选择合适的版本。同时,函数可以作为返回值,也可以作为参数传递,实现高阶函数的概念。 ...

    ActionScript3.0详解

    6. **垃圾回收机制**:AS3实现了自动内存管理,开发者无需手动释放内存,减少内存泄漏问题。 7. **XML和JSON支持**:AS3内置了处理XML和JSON数据的能力,方便与服务器进行数据交换。 8. **错误处理**:AS3增加了...

    AS+3.0+学习文档精华版(一).rar

    3. **面向对象编程**:AS 3.0支持类的继承、封装和多态,使得代码复用和模块化设计成为可能。笔记会详细解释如何创建类、定义构造函数、使用访问修饰符(public、private、protected),以及覆盖和重载方法。 4. **...

    OverloadingOperators_visualbasic_

    3. **类型安全**:运算符重载应确保类型安全,避免不兼容类型的运算。 4. **效率**:运算符重载不应引入不必要的性能开销。 ### 示例应用 考虑一个自定义的复数类型`ComplexNumber`,我们可能想要重载加法和乘法...

    [VB.NET源码]防止运行重载多个程序实例

    【VB.NET源码实现防止运行重载多个程序实例】 在软件开发中,有时我们需要确保同一时间只能有一个实例的程序在运行。例如,某些应用程序如果同时打开多个实例可能会导致数据冲突或者资源浪费。VB.NET(Visual Basic...

    python如何重载模块实例解析

    下面通过一个具体的例子来展示如何使用Python的线程和`reload()`函数来实现模块的自动重载。 首先,创建一个名为`reloadsetting.py`的模块文件,内容如下: ```python # coding=utf-8 ''' Created on 2016-3-25 @...

    Flash 8+C# 树型菜单

    6. **性能优化**:如何避免不必要的Flash重载,实现高效的数据更新和菜单交互。 这个主题对于想要学习跨平台开发,特别是结合客户端交互和服务器处理的开发者来说非常有价值。通过实践这样的项目,你可以提升自己在...

    详细分析c# 运算符重载

    在`Main`方法中,创建了三个`Box`对象,并展示了如何通过运算符重载实现对象的加法操作,然后输出结果的体积。 7. **不可重载的运算符**:有一些运算符在C#中是不可重载的,比如成员访问运算符`.`、指针解引用...

    VB.NET面向对象的实现

    VB.NET通过方法重写(Override)和重载(Overload)实现多态: ```vbnet Class Teacher Inherits Person Overloads Sub Study() Console.WriteLine("教师正在备课") End Sub Overrides Sub Study() Console...

    新技术培训 培训讲义7_封装和继承.doc

    在AS3中,使用`extends`关键字表示继承关系,但AS3不支持多继承,可以通过实现接口来达到类似效果。例如,`Teacher`类继承自`Users`类,可以重写父类的方法,如`exec`,通过`override`关键字标记。 访问控制在AS3中...

    重载toString实现JS HashMap分析

    不过请仔细对比一下,你会发现其中差别还是很大的。...而java之所以能够接受任何类型的key,是因为其Object实现了HashCode方法,而每个类都继承或重写了Object的HashCode,所以任何变量都有一个哈希值。我们也可以

Global site tag (gtag.js) - Google Analytics