2011-10-17 17 views
6

getFeatures.m adlı bir işlev dosyam var gibi görünüyor:Aynı sınıfı global olarak içe aktar

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 

Gördüğünüz gibi, her iki işlev de xpath kütüphanesini içe aktarıyor, çünkü bu sınıfı içe aktarmak için gereken birçok fonksiyon var. zaman?

+2

Neden içe aktarmayı işlevlerden çıkarmıyorsunuz? – cyborg

cevap

2

Aynı probleme tökezledim. Kişisel (ve çirkin!) Geçici çözümüm, ithalatı gerçekleştiren bir yöntemi tanımlamak; yine de bu fonksiyonu çağırmak zorunda kalacaksınız, ama en azından ithalatı, dizelerin içinde de olsa, tek bir yerde gruplandırıyorsunuz.

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

Bu

ya initJava() veya eval(initJava()) olarak adlandırılabilir. Eğer doğru hatırlıyorsam, ilki her zaman yapması gereken şeyi yapmaz, ama bunu kendin test etmelisin.

Birisi daha iyi/daha güzel/başka bir çözüme sahipse, bunu duymayı çok istiyorum.

İlgili konular