QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 6408|回复: 2
打印 上一主题 下一主题

回调函数定义和调用

[复制链接]
字体大小: 正常 放大

2620

主题

162

听众

1万

积分

升级  0%

  • TA的每日心情
    开心
    2015-3-12 15:35
  • 签到天数: 207 天

    [LV.7]常住居民III

    社区QQ达人 发帖功臣 新人进步奖 优秀斑竹奖 金点子奖 原创写作奖 最具活力勋章 助人为乐奖 风雨历程奖

    群组第六届国赛赛前冲刺培

    群组国赛讨论

    群组2014美赛讨论

    群组2014研究生数学建模竞

    群组数学中国试看培训视频

    跳转到指定楼层
    1#
    发表于 2014-12-30 10:39 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    创建完听众后就可以定义听众的回调函数了,听众的回调函数可以是一个对象中的普通方法或静态方法,也可以是一个普通的函数(全局函数)。根据回调函数在不同位置处的定义,其函数参数形式有所不同。一般回调函数的定义格式如下。
    (1)作为一个类的普通方法
    methods
       function CallbackFunction (obj,src,evnt)
          %obj:本类实例
          %src:产生事件的对象
          %evnt:事件数据
          ...
       end
    end
    这时,回调函数的第一个参数obj就必须是本类对象;第二个参数src是产生事件的对象;第三个参数evnt是事件数据。
    (2)作为一个类的静态方法
    此时,本类对象参数obj可以缺省,形式如下:
    methods (Static = true)
        function CallbackFunction (src,evnt)
          %src:产生事件的对象
          %evnt:事件数据
            ...
        end
    end
    (3)作为普通函数
    此时,对象obj可以缺省,形式如下:
    function CallbackFunction (src,evnt)
          %src:产生事件的对象
          %evnt:事件数据
          ...
    end
    注意:无论什么情况下,回调函数至少应有两个输入参数。
    有了回调函数,接下来就是回调函数的调用问题了。根据回调函数是类的普通方法、静态方法和普通函数的不同情况,其调用格式也有差别,具体如下。
    (1)如果回调函数是一个普通函数,调用格式为:
    hlistener = addlistener(eventSourceObj,'MyEvent',  @CallbackFunction);
    (2)如果回调函数是一个对象中的方法,则调用格式为:
    hlistener = addlistener(eventSourceObj,'MyEvent',  @obj.CallbackFunction);
    (3)如果回调函数是一个类中的静态方法,则调用格式为:
    hlistener = addlistener(eventSourceObj,'MyEvent',  @ClassName.CallbackFunction);
    另外,如果函数形式比较简单,也可用无名函数的形式调用,如:
    hlistener = addlistener(eventSourceObj,'MyEvent',  @(x,y) x.^2+y.^2);
    当用event.listener类的构造函数来定义听众对象时,回调函数的调用方法与addlistener一致。


    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信

    0

    主题

    7

    听众

    705

    积分

    升级  26.25%

  • TA的每日心情

    2017-5-7 16:58
  • 签到天数: 366 天

    [LV.9]以坛为家II

    邮箱绑定达人 社区QQ达人

    群组2012HIMCM培训群组

    群组第四届数学中国美赛实

    群组第三届数模基础实训

    群组高数系列公益培训

    群组物联网工程师培训

    回复

    使用道具 举报

    0

    主题

    9

    听众

    2

    积分

    升级  40%

    该用户从未签到

    自我介绍
    ...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2025-9-15 04:20 , Processed in 0.745764 second(s), 68 queries .

    回顶部