Matlab listeners multiple execution
2 views (last 30 days)
Show older comments
I have an issue using Matlab listeners: PreGet and PostGet. My purpose is to be able to execute a set of functions when I am writing and when I am writing a calls property (before and after each read/write operation). This is an example of my class:
classdef myClass < handle
properties (GetObservable,SetObservable,GetAccess = public, SetAccess = public )
myProp = '';
end
methods
function myClass = myClass(Input)
myClass.myProp = Input;
addlistener(myClass , 'myProp' , 'PreGet' , @myClass.PreReadClass);
addlistener(myClass , 'myProp' , 'PreSet' , @myClass.PreSendClass);
addlistener(myClass , 'myProp' , 'PostGet' , @myClass.PostReadClass);
addlistener(myClass , 'myProp' , 'PostSet' , @myClass.PostSendClass);
end
end
methods (Hidden)
function PreSendClass(myClass, varargin)
disp('PreSet Executed')
end
function PostSendClass(myClass, varargin)
disp('PostSet Executed')
end
function PreReadClass(myClass, varargin)
disp('PreGet Executed')
end
function PostReadClass(myClass, varargin)
disp('PostGet Executed')
end
end
end
Matlab Run examples:
>> myTest = myClass(1);
myTest.myProp = 1;
PreSet Executed
PostSet Executed
>> myVar = myTest.myProp;
myVar
PreGet Executed
PostGet Executed
myVar =
1
Everything fine with this. I can execute my functions and get the results which I want. Though, I observed, that wen I use 'Tab Completion' feature from Matlab on 'myTest.myProp', PreGet and PostGet is executed, 4 times!! Sometimes 'myProp' is a dynamic structure and I am using Tab completion to access its fields.
myTest.myProp. % Use tab completion
PreGet Executed
PostGet Executed
PreGet Executed
PostGet Executed
PreGet Executed
PostGet Executed
PreGet Executed
PostGet Executed
Is it possible to prevent this from being executed 4 times? Or if not to prevent it at least to detect it and perform and action? I can run another function when tab completion is executed (e.g. display help or tool tip in command window).
Thank you!
4 Comments
Sean de Wolski
on 9 Oct 2013
If your Company/University's SMS is current you can upgrade to one of the newer releases at no additional cost.
Answers (1)
per isakson
on 9 Oct 2013
Edited: per isakson
on 11 Oct 2013
I cannot reproduce the behavior you describe with R2013a. However, there might have been a bug although I don't find one in the Bug Report. (Not all bugs are in that list.)
.
2013-10-10
Did you ask the Matlab tech support?
0 Comments
See Also
Categories
Find more on Manage Products in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!