数学建模社区-数学中国

标题: 回调函数定义和调用 [打印本页]

作者: 建不了的模。    时间: 2014-12-30 10:39
标题: 回调函数定义和调用
创建完听众后就可以定义听众的回调函数了,听众的回调函数可以是一个对象中的普通方法或静态方法,也可以是一个普通的函数(全局函数)。根据回调函数在不同位置处的定义,其函数参数形式有所不同。一般回调函数的定义格式如下。
(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一致。



作者: w785485068    时间: 2015-1-2 15:19
支持。。。。。。。。

作者: domodo2012    时间: 2016-10-17 09:10
学习了,好东西





欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5