exponenta event banner

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

Указание обратных вызовов прослушивателя

Обратные вызовы - это функции, которые выполняются при получении прослушивателем уведомления о событии. Передать дескриптор функции, ссылающийся на функцию обратного вызова 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

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

Использование методов для обратных вызовов

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

Связанные темы