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

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

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

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

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

  • event.EventData возразите или объект, который выведен из event.EventData класс.

Синтаксис к ссылочному обратному вызову

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

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

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

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

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

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

Для функции в package: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

Похожие темы