2012-03-20 10 views
31

Qual è il significato dei seguenti nomi di cartella in MATLAB?@folder e + cartella

  • @folder
  • +folder

Ho creato una classe Tata.m che usa la sintassi classdef. Devo inserirlo in un @folder o +folder?

Ho guardato la documentazione, ma non è davvero chiaro in quali casi il @folder dovrebbero essere utilizzate e in cui il +folder devono essere utilizzati i casi.

risposta

34

Il pezzo +folder è una cartella del pacchetto MATLAB. Se si inserisce Tata.m in una posizione come +folder/Tata.m, sarà noto a MATLAB come classe folder.Tata. Se lo si inserisce in una cartella come someOtherFolder/Tata.m o someOtherFolder/@Tata/Tata.m, sarà noto a MATLAB come Tata.

Può essere utile inserire un file classdef in una directory di classe come @Tata per consentire di inserire la definizione di alcuni (o tutti) metodi in file separati.

Il doc ha ulteriori dettagli.

EDIT: Per tentare di chiarire i @ directory: storicamente, una classe Tata con i metodi methodOne e methodTwo richiederebbe i seguenti file:

somePlaceOnThePath/@Tata/Tata.m 
somePlaceOnThePath/@Tata/methodOne.m 
somePlaceOnThePath/@Tata/methodTwo.m 

Nel "nuovo" sistema oggetto, è comunque possibile utilizzare la layout sopra senza modifiche. All'altro estremo, è possibile inserire l'intera realizzazione di Tata in un unico classdef blocco:

somePlaceOnThePath/Tata.m 

Se si dispone di alcuni grandi metodi, o vuole dividere l'attuazione della classe Tata in più file per rendere sviluppo parallelo più semplice, si può prendere usare un classdef come questo:

%# somePlaceOnThePath/@Tata/Tata.m: 
classdef Tata 
    methods 
     result = methodTwo(obj, arg) 

     function methodOne(obj) 
      disp('hello from methodOne'); 
     end 
    end 
end 

E anche

%# somePlaceOnThePath/@Tata/methodTwo.m: 
function result = methodTwo(obj, arg) 
% do stuff with obj and arg 
end 

In senso stretto, la dichiarazione anticipata di methodTwo nello classdef è facoltativa poiché utilizza gli specificatori di accesso predefiniti. Se si desidera che methodTwo sia un metodo privato, è possibile inserirlo in un blocco methods (Access = private).

+2

ok, grazie Edric, ora capisco la cartella + ma non la cartella @ – lola

+0

Il collegamento alla documentazione è interrotto e non riesco a capire cosa dovrebbe essere. Sto anche ancora cercando di capire il significato e il significato di una "cartella di pacchetti MATLAB". – patrickvacek

+0

Hm, non sono sicuro al 100% ora, forse era destinato a essere http://www.mathworks.com/help/matlab/matlab_oop/scoping-classes-with-packages.html o http: // www .mathworks.com/help/Matlab/matlab_oop/L'organizzazione-classi-in-folders.html – Edric

Problemi correlati