OOP subsref runs twice with "end"?
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
I have a simple object:
classdef objTest
methods
function [varargout]=subsref(obj,S)
disp(S)
varargout={[]}; %irrelevant for this test...
end
end
end
Now if I do o = objTest; o.test{1}(1:end), it displays S twice, first showing only the . and {} references, and then again showing all 3. Can anyone explain why this happens? I assume it's somehow related to a builtin function running to figure out how to evaluate the "end"?
0 Kommentare
Akzeptierte Antwort
Matt J
am 20 Okt. 2014
Bearbeitet: Matt J
am 20 Okt. 2014
I assume it's somehow related to a builtin function running to figure out how to evaluate the "end"?
Yes. The expression o.test{1}(1:end) is equivalent to
temp=o.test{1};
n=numel(temp);
o.test{1}(1:n);
So, subsref is called twice. If you had done o.test{end}(1:end), then it would have been called three times.
0 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Construct and Work with Object Arrays finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!