Создание дескриптора функции для перегруженной функции end

MATLAB позволяет перегружать различные операторы для пользовательских классов. Один из не перегруженных списком операторов 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's 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 функция определенного класса?

1 ответ

Перегрузка - если указанная функция перегружает функцию в классе, который не является фундаментальным классом MATLAB, функция не связана с дескриптором функции во время ее создания. Вместо этого MATLAB рассматривает входные аргументы и определяет, какую реализацию вызывать во время оценки.


Дескрипторы функций хранят их абсолютный путь, поэтому, когда у вас есть действительный дескриптор, вы можете вызывать функцию из любого места. Вам не нужно указывать путь к функции при создании дескриптора, только имя функции.


поэтому, если ваша функция 'end' находится в пути matlab, matlab рассматривает ее как кандидата для оценки в зависимости от входных данных, в вашем случае, если входной объект относится к типу класса 'table', то feval(str2func('end'),i,j) оценить функцию завершения, которая определена в папке @table/end.m

Другие вопросы по тегам