Does the access method of a dependent property get called twice when the property is indexed into?

조회 수: 2 (최근 30일)
I have a class with a dependent property z. The method get.z(obj) returns a vector. This:
y = myObj.z(end);
appears to call get.z twice! The profiler shows 2 calls from the parent function and the run time is twice the expected run time. On the other hand:
x = myObj.z;
y = x(end);
calls get.z once and cuts down run time by half. Is this the intended behavior?
  댓글 수: 1
Walter Roberson
Walter Roberson 2016년 10월 13일
I speculate that one of the two is due to the "end", as it would need to find the size . This is just speculation on my part, though.

댓글을 달려면 로그인하십시오.

채택된 답변

Naor Movshovitz
Naor Movshovitz 2016년 10월 13일
Confirmed Walter's comment. Indeed the culprit is the keyword end. Here is minimal working example.
classdef Untitled
properties (Dependent)
x;
end
methods
function val = get.x(~)
fprintf('called\n')
val = [1,2,3];
end
end
end
>> obj = Untitled;
>> obj.x(2);
called
ans =
2
>> obj.x(end)
called
called
ans =
3
This behavior is mostly benign but occasionally troublesome, and easy to fix. I think this is a case for an m-lint message at least.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Software Development Tools에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by