最近在研究PureMVC源码的过程中发现Function顶级包中的apply函数蛮有意思的,通过这个函数,可以及时的调用不同类中的同一个函数,这是该函数的格式:apply(thisArg:* , argArray:* ):*

指定要在 ActionScript 调用的任何函数内使用的  thisObject   的值。此方法还指定要传递给任何被调用函数的参数。由于  apply()   是 Function 类的方法,所以它也是 ActionScript 中每个 Function 对象的方法。

与  Function.call()   (它将参数指定为用逗号分隔的列表)不同,该方法将参数指定为一个 Array 对象。如果在脚本实际执行前,无法知道要传递的参数的数量,那么这种方法通常很有用。

返回被调用函数指定为返回值的值。

下面例子:

首先定义好接口:

package com.interfaces
{
    public interface ITest
    {
        function testApply(showText:String):void;
    }
}

下面是分别定义的四个类:

T1:

package com.custom
{
    import com.interfaces.ITest;
   
    public class T1 implements ITest
    {
        public function T1()
        {
        }
       
        public function testApply(showText:String):void
        {
            trace("T1 : "+showText);
        }
    }
}

T2:

package com.custom
{
    import com.interfaces.ITest;
   
    public class T2 implements ITest
    {
        public function T2()
        {
        }
       
        public function testApply(showText:String):void
        {
            trace("T2 : "+showText);
        }
    }
}

T3:

package com.custom
{
    import com.interfaces.ITest;
   
    public class T3 implements ITest
    {
        public function T3()
        {
        }
       
        public function testApply(showText:String):void
        {
            trace("T3 : "+showText);
        }
    }
}

T4:

package com.custom
{
    import com.interfaces.ITest;
   
    public class T4 implements ITest
    {
        public function T4()
        {
        }
       
        public function testApply(showText:String):void
        {
            trace("T4 : "+showText);
        }
    }
}

在主类中测试:

package
{
    import com.custom.T1;
    import com.custom.T2;
    import com.custom.T3;
    import com.custom.T4;
    import com.interfaces.ITest;
   
    import flash.display.Sprite;
   
    public class TFunctionApply extends Sprite
    {
        private var testArr:Array = new Array();
        public function TFunctionApply()
        {
            this.showTest();
        }
       
        private function showTest():void
        {
            testArr.push(new T1());
            testArr.push(new T2());
            testArr.push(new T3());
            testArr.push(new T4());
           
            for(var i:int=0;i<this.testArr.length;i++)
            {
                this.getFun(i).apply(this.getClass(i),["success"]);
            }
        }
       
        public function getFun(index:int):Function
        {
            return (this.testArr[index] as ITest).testApply;               
        }
       
        public function getClass(index:int):ITest
        {
            return this.testArr[index];
        }
       
        private function testFA():void
        {
            t2.apply(this,["success"]);
        }
       
        private function t2(showText:String):void
        {
            trace("t2 : "+showText);
        }
    }
}

输出结果为:

T1 : success
T2 : success
T3 : success
T4 : success

是不是很方便,在对接口的编程中很好用。

Function中的apply函数的应用相关推荐

  1. 关于学习java函数式接口Function中的apply方法的一些感悟

    起因是这样的,学习函数式编程的时候学到了Function接口,对于其中的apply方法感到不解,下面贴上我的不解代码 在这里插public class Function接口 {public stati ...

  2. pandas中Series的apply函数

    闲来无事 浏览源码 发现了一个特别有意思的函数 Series中的apply()函数 和大多数apply函数一样,这个函数传入的参数也是一个函数,目的是对传入的series的值进行批量的处理,不用我们手 ...

  3. 理解与使用Javascript中的回调函数

    在Javascript中,函数是第一类对象,这意味着函数可以像对象一样按照第一类管理被使用.既然函数实际上是对象:它们能被"存储"在变量中,能作为函数参数被传递,能在函数中被创建, ...

  4. 【JavaScript】理解与使用Javascript中的回调函数

    在Javascript中,函数是第一类对象,这意味着函数可以像对象一样按照第一类管理被使用.既然函数实际上是对象:它们能被"存储"在变量中,能作为函数参数被传递,能在函数中被创建, ...

  5. woe分析_Python数据分析—apply函数

    在对海量数据进行分析的过程中,我们可能要把文本型的数据处理成数值型的数据,方便放到模型中进行使用.也可能需要把数值型的数据分段进行处理,比如变量的woe化.而这些操作都可以借助python中的appl ...

  6. if函数python_python pandas实现excel中的if 函数(一)

    excel中,if函数的使用非常普遍.如果通过pandas可以有好几种方法,核心还是通过if语句实现.下面我来阐述一下: >>> df = pd.read_excel(r'D:/my ...

  7. python pandas实现excel中的if 函数(一)

    excel中,if函数的使用非常普遍.如果通过pandas可以有好几种方法,核心还是通过if语句实现.下面我来阐述一下: >>> df = pd.read_excel(r'D:/my ...

  8. js中bind、call、apply函数的用法

    最近一直在用 js 写游戏服务器,我也接触 js 时间不长,大学的时候用 js 做过一个 H3C 的 web 的项目,然后在腾讯实习的时候用 js 写过一些奇怪的程序,自己也用 js 写过几个的网站. ...

  9. 【Python】Pandas中的宝藏函数-apply

    apply()堪称Pandas中最好用的方法,其使用方式跟map()很像,主要传入的主要参数都是接受输入返回输出. 但相较于昨天介绍的map()针对单列Series进行处理,一条apply()语句可以 ...

最新文章

  1. 华为交换机 查看IP和MAC对应关系
  2. define,require的基本用法
  3. SAP Marketing Cloud功能简述(一)Contacts和Profiles
  4. 用BenchmarkDotNet看Property
  5. stl vector 函数_vector :: back()函数以及C ++ STL中的示例
  6. C#中通过代码控制IIS服务重启
  7. day16 java中的package和import
  8. 本科生如何系统地学习前端开发?
  9. 高性能mysql 附录D explain执行计划详解
  10. 20171129-构建之法:现代软件工程-阅读笔记
  11. 新手学习Linux——搭建个人论坛
  12. 【POJ 2449】第K短路【A*算法】
  13. JS对大陆车牌照的归属地(省份和城市)加载和显示
  14. 嵌入式学习--1线协议(以ds18b20为例)
  15. 使用 Anaconda 安装 Pytorch
  16. [转载] 高校两院院士名单
  17. 项目开发之微信支付接口调用
  18. IFM分量包络解调分析MATLAB,[原创]数据包络分析(DEA)简介
  19. Android获取wifi的ip地址
  20. html 中二维数组创建,【百度】js基础任务2-二维数组,dom操作

热门文章

  1. C28xx:File Loader:Data verificaton failed at address 0xxx Please verify target memory and memory map
  2. 计蒜客 腾讯的一笔画游戏
  3. 结果填空:马的管辖(超详解版)
  4. 如何判别假新闻?多模态假新闻检测
  5. 基于面向对象的权限管理系统设计与实现[1]
  6. AD18官方原器件库下载及导入方法
  7. isset和empty以及is_null区别
  8. Ultra Wideband Wireless Communication
  9. Direct3D学习手记三:绘制彩色3D物体
  10. 硬盘坏道终结者---低级格式化