Справочный материал MATLAB для абстрактного метода - PullRequest
2 голосов
/ 18 декабря 2009

В обычных методах класса я могу предоставить содержимое для команды «help» в MATLAB Однако при написании абстрактного метода функция справки не видит абстрактные методы. Например, если у вас есть класс NeedsHelp:

classdef NeedsHelp
    methods (Abstract)
        INeedHelp(self)
        % This method is not visible to the help command.
    end
    methods
        function IHaveHelp(self)
            % This method shows help as expected.
        end
    end
end

Команда справки действует следующим образом (R2009b):

>> help NeedsHelp.IHaveHelp
  This method shows help as expected.

>> help NeedsHelp.INeedHelp

NeedsHelp.INeedHelp not found.

Существуют ли решения для предоставления документации для абстрактных методов?

Ответы [ 3 ]

6 голосов
/ 15 ноября 2012

Поместите справку перед строкой функции для абстрактных методов, так же, как вы делаете для свойств. У меня нет 9b для тестирования, но в 11b:

classdef NeedsHelp
    methods (Abstract)
        % Help goes here.
        INeedHelp(self)
    end
end

>> help NeedsHelp.INeedHelp
  Help goes here.
4 голосов
/ 13 ноября 2012

Я только столкнулся с этой проблемой. Вы не можете сделать это в фактическом определении класса. Существует обходной путь (по крайней мере, в 2012b), использующий тот факт, что вы можете поместить Методы в разные файлы и Приоритет класса и Путь MATLAB .

Например, скажем, у вас есть файл класса, сохраненный как

C:\myPath\NeedsHelp.m

Чтобы добавить файл справки для абстрактного метода, сначала создайте папку в каталоге (myPath), в которой указано имя класса, которому предшествует @ -symbol (@NeedsHelp). Внутри этой папки создайте M-файл с именем абстрактного метода (INeedHelp.m).

C:\myPath\@NeedsHelp\INeedHelp.m

Этот M-файл содержит только справочную документацию. Из-за того, как работает приоритет классов, будут вызываться конкретные методы методов подкласса, но когда не найдена «справочная» документация, в папке @ выполняется поиск определения метода.

Документация "help" наследуется как абстрактными, так и конкретными подклассами и может быть перезаписана обоими. Обратите внимание, что вам не нужно помещать свой класс в папку @, чтобы это работало должным образом в целях документации.

(Это в основном способ предоставления справочной документации для встроенных функций).

1 голос
/ 18 декабря 2009

Похоже, что это невозможно с R2009b, согласно блогу Лорен на The MathWorks. См. этот комментарий и ее ответ .

...