MATLAB позволяет перегружать различные operators для пользовательских классов. Один из неуправляемых перегружаемых операторов - end
, что можно узнать из \matlab\lang\end.m
:
% END(A,K,N) is called for indexing expressions involving the object A
% when END is part of the K-th index out of N indices. For example,
% the expression A(end-1,:) calls A END method with END(A,1,2).
Примером такого метода является table.end
(вставьте в командную строку MATLAB и нажмите "Открыть выбор", чтобы перейти к его определению, он определен в ...\matlab\datatypes\@tabular\end.m
).
В отличие от обычного метода нельзя просто написать hEnd = @end
, потому что это дает ошибку:
>> hEnd = @end;
hEnd = @end;
↑
Error: Illegal use of reserved keyword "end".
С другой стороны, запись e = str2func('end');
работает, но она ссылается на функцию по умолчанию end
(даже при временном переходе в папку, где найден желаемый end.m
).
Неудачные попытки включают str2func('table>end');
, str2func('table\end');
, str2func('table.end');
и @(a,b,c)table.end(a,b,c);
.
Мой вопрос: Как создать дескриптор функции end
для определенного класса?