Main Content

리스너 콜백 구문

리스너 콜백 지정하기

콜백은 리스너가 이벤트 알림을 수신할 때 실행되는 함수입니다. 리스너를 생성할 때, 콜백 함수를 참조하는 함수 핸들을 addlistener 또는 listener에 전달하십시오.

모든 콜백 함수는 최소 2개 이상의 인수를 받아야 합니다.

  • 이벤트 소스인 객체의 핸들

  • 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)

네임스페이스에 포함된 함수의 경우: nspname.functionName

lh = addlistener(eventSourceObj,'EventName',@nspname.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

관련 항목