2009-12-17 6 views
2

Dans les méthodes de classe ordinaires, je peux fournir du contenu pour la commande "help" dans MATLAB. Cependant, lors de l'écriture d'une méthode abstraite, la fonction d'aide ne voit pas les méthodes abstraites. Par exemple, si vous avez un NeedsHelp de classe:MATLAB aide contenu pour une méthode abstraite

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 

La commande d'aide agit comme suit (R2009b):

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

>> help NeedsHelp.INeedHelp 

NeedsHelp.INeedHelp not found. 

Y a-t-il des solutions à fournir de la documentation pour les méthodes abstraites?

Répondre

1

On dirait que ce n'est pas possible à partir de R2009b, selon le blog de Loren à The MathWorks. Voir this comment and her reply.

+0

Ne fonctionne pas en 2010a avant la libération soit – Jonas

4

Je viens de rencontrer ce problème. Vous ne pouvez pas le faire dans la définition de classe réelle. Il existe une solution de contournement (au moins en 2012b) en utilisant le fait que vous pouvez mettre Methods in Different Files et Class Precedence and MATLAB Path.

Pour l'exemple, supposons que vous avez votre fichier de classe enregistré sous

C:\myPath\NeedsHelp.m 

Pour ajouter le fichier d'aide pour la méthode abstraite, tout d'abord créer un dossier dans le répertoire (myPath) qui a le nom de la classe précédé du @ -symbol (@NeedsHelp). Dans ce dossier, créez un fichier M avec le nom de la méthode abstraite (INeedHelp.m).

C:\myPath\@NeedsHelp\INeedHelp.m 

Ce fichier M contient uniquement la documentation "help". En raison de la manière dont la priorité de classe fonctionne, les méthodes concrètes d'une sous-classe de méthodes seront appelées, mais lorsqu'aucune documentation "help" n'est trouvée, le @-dossier est recherché pour une définition de méthode.

La documentation "help" est héritée à la fois par les sous-classes abstraites et concrètes et peut être écrasée par les deux. Notez que vous n'avez pas à placer votre classe dans le @ dossier pour que cela fonctionne correctement dans le but de la documentation.

(C'est essentiellement la manière dont la documentation "help" est fournie pour les fonctions intégrées).

6

Placez l'aide avant la ligne de fonction pour les méthodes abstraites, comme pour les propriétés. Je n'ai pas 9b à tester, mais dans 11b:

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

>> help NeedsHelp.INeedHelp 
    Help goes here. 
Questions connexes