리스너 콜백 구문
리스너 콜백 지정하기
콜백은 리스너가 이벤트 알림을 수신할 때 실행되는 함수입니다. 리스너를 생성할 때, 콜백 함수를 참조하는 함수 핸들을 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