2012-01-26 11 views
5

Non riesco a capire come fare una cosa così semplice come definire costanti usando altre.Come definire una costante usando un altro in una classe Matlab

Ad esempio, un esempio fittizio:

classdef DummyClass < handle 
    properties (Constant) 
     NB_SECONDS_IN_MINUTE = 60; 
     NB_MINUTES_IN_HOUR = 60; 

     NB_SECONDS_IN_HOUR = NB_SECONDS_IN_MINUTE * NB_MINUTES_IN_HOUR; 
    end 
end 

Questo non funziona :(

Ho poi provato con questa linea:

NB_SECONDS_IN_HOUR = DummyClass.NB_SECONDS_IN_MINUTE * DummyClass.NB_MINUTES_IN_HOUR; 

ma che non funziona neanche. ..

Qualcuno ha un indizio qui:/

(Sto usando MATLAB R2009a btw)

+0

quello messaggio di errore si presenta? –

+0

ha detto "variabile non definita o classe DummyClass". btw, Edric mi ha dato la soluzione: ho appena dimenticato che la mia classe era in una sottocartella, e in Matlab, è necessario utilizzare il nome completo di una classe (comprese le sottodirectory) –

risposta

6

È sicuramente necessario fare riferimento alle costanti con il nome completo della classe, come nel secondo caso. DummyClass all'interno di un pacchetto (+packagename) directory? Se è così, è necessario utilizzare il nome completo, vale a dire

NB_SECONDS_IN_HOUR = packagename.DummyClass.NB_SECONDS_IN_MINUTE * packagename.DummyClass.NB_SECONDS_IN_HOUR; 

EDIT: appena testato questo R2009a:

>> ver matlab 
------------------------------------------------------------------------------------- 
[...] 
------------------------------------------------------------------------------------- 
MATLAB            Version 7.8  (R2009a) 
>> type DummyClass 

classdef DummyClass < handle 
    properties (Constant) 
     NB_SECONDS_IN_MINUTE = 60; 
     NB_MINUTES_IN_HOUR = 60; 

     NB_SECONDS_IN_HOUR = DummyClass.NB_SECONDS_IN_MINUTE * DummyClass.NB_MINUTES_IN_HOUR; 
    end 
end 

>> DummyClass.NB_SECONDS_IN_HOUR 
ans = 
     3600 
+1

Quindi dipende dal percorso in cui codice la classe ??? (e quindi non riusciamo a riutilizzare questa classe direttamente in un progetto anoter senza la stessa struttura di directory?) – Alexxx

+0

Importa solo DummyClass.m in una cartella * pacchetto MATLAB *, cioè una che inizia con "+". Quando lo fai, modifichi il nome completo della classe. – Edric