Синтаксис коллбэка прослушивателя

Определение обратных коллбэков прослушивателя

Коллбэки - это функции, которые выполняются, когда прослушиватель получает уведомление о событии. Передайте указатель на функцию, ссылающуюся на функцию обратного вызова addlistener или listener при создании прослушивателя.

Все функции обратного вызова должны принимать по крайней мере два аргумента:

  • Указатель на объект, который является источником события

  • Система координат event.EventData объект или объект, который получают из event.EventData класс.

Синтаксис для ссылки на коллбэк

Для функции: functionName

lh = addlistener(eventSourceObj,'EventName',@functionName)

Для обычного метода, вызываемого с объектом класса: obj.methodName

lh = addlistener(eventSourceObj,'EventName',@obj.methodName)

Для статического метода: ClassName.methodName

lh = addlistener(eventSourceObj,'EventName',@ClassName.methodName)

Для функции в пакете: PackageName.functionName

lh = addlistener(eventSourceObj,'EventName',@PackageName.functionName)

Входные параметры для функции обратного вызова

Определите функцию обратного вызова, чтобы принять необходимые аргументы:

function callbackFunction(src,evnt)
   ...
end

Если вы не используете аргументы источника событий и данных о событиях, можно задать функцию, чтобы игнорировать эти входы:

function callbackFunction(~,~)
   ...
end

Для метода:

function callbackMethod(obj,src,evnt)
   ...
end

Дополнительные аргументы для функции обратного вызова

Чтобы передать аргументы в обратный коллбэк в дополнение к аргументам источника и данных о событиях, переданным MATLAB®, использовать анонимную функцию. Анонимные функции могут использовать любые переменные, которые доступны в текущей рабочей области.

Синтаксис с использованием анонимной функции

Вот синтаксис для обычного метода. Входные параметры (arg1,...argn) должны быть определены в контексте, в котором вы вызываете addlistener.

lh = addlistener(src,'EventName',@(src,evnt)obj.callbackMethod(src,evnt,arg1,...argn)

Использовать varargin для определения функции обратного вызова.

function callbackMethod(src,evnt,varargin)
   arg1 = varargin{1};
   ...
   argn = varargin{n};
   ...
end

Общие сведения об анонимной функции см. в разделе Анонимные функции.

Использование методов для коллбэков

The TestAnonyFcn класс показывает использование анонимной функции с дополнительным аргументом. В прослушиватель коллбэка отображаются аргументы входов, чтобы показать, как MATLAB вызывает метод коллбэка.

classdef TestAnonyFcn < handle
   events
      Update
   end
   methods
      function obj = TestAnonyFcn
         t = datestr(now);
         addlistener(obj,'Update',@(src,evnt)obj.evntCb(src,evnt,t));
      end
      function triggerEvnt(obj)
         notify(obj,'Update')
      end
   end
   methods (Access = private)
      function evntCb(~,~,evnt,varargin)
         disp(['Number of inputs: ',num2str(nargin)])
         disp(evnt.EventName)
         disp(varargin{:})
      end
   end
end

Создайте объект и инициируйте событие, вызвав triggerEvt метод:

obj = TestAnonyFcn;
obj.triggerEvnt;
Number of inputs: 4
Update
01-Jul-2008 17:19:36

Похожие темы