How to detect the 'end' directive in subsref?
3 次查看(过去 30 天)
显示 更早的评论
Hi all!
I am trying to reimplement the indexing of the object. Let us take as an example this primitive class that return the substript
classdef buffer
function value = subsref(obj, S)
value = S(1).subs{1};
end
end
Let's create object
buf=buffer()
Then buf(7) returns 7. buf(3:7) returns [3 4 5 6 7]. All good so far. Then buf(:) returns char ':'. Ok, can process that. Now comes the funny part:
buf(end) returns 1
buf(end+1) returns 2
buf(1:end) returns 1
buf(2:end) returns []
Question: is there a workaround so that 'end' is not always equivalent of 1, but I would be able to add my own implementation?
0 个评论
采纳的回答
Steven Lord
2020-1-30
The reason end was always taking the value 1 is probably because your object is a scalar (size [1 1]) that internally contains an array. Consider overloading size to return the size of that internal array if appropriate.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Construct and Work with Object Arrays 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!