2011-10-17 1 views
6

ho un file funzione chiamata getFeatures.m che assomiglia:Importa stessa classe a livello mondiale

function [features] getFeatures() 
    % Import the XPath classes 
    import javax.xml.xpath.* 
    % other code 
end 
function [name] = getName() 
    % Import the XPath classes 
    import javax.xml.xpath.* 
    % other code 
end 

Come si può vedere, entrambe le funzioni Importa libreria XPath, dal momento che ho un sacco di funzioni che hanno bisogno di importare quella classe come posso farlo una volta sola?

+2

Perché non si importa l'importazione dalle funzioni? – cyborg

risposta

2

Mi sono imbattuto nello stesso problema. La mia soluzione personale (e brutta!) Per questo è la definizione di un metodo che esegue le importazioni; dovrai comunque chiamare quella funzione, ma almeno raggruppa le importazioni in un singolo posto, anche se all'interno delle stringhe.

function cmd = initJava() 
    cmd = 'import package.*'; 
    if nargout == 0 
     warning('off','MATLAB:Java:DuplicateClass'); 
     evalin('caller',cmd); 
     warning('on','MATLAB:Java:DuplicateClass'); 
    end; 
end 

Questo può essere chiamato sia come initJava() o eval(initJava()). Se ricordo bene, il primo non sempre fa quello che dovrebbe fare, ma dovrai testarlo tu stesso.

Se qualcuno ha una soluzione migliore/più bella/altra, sono molto interessato a sentirlo.