2009-07-01 12 views
5

मैं नामस्थान में 'स्कोप' कार्यों के लिए कक्षाओं और स्थिर तरीकों का उपयोग कर रहा हूं, सी # के समान। हालांकि, हर बार जब मैं कक्षा में एक नई विधि जोड़ता हूं, तो पहले यह नहीं मिलता है। मुझे पहचानने के लिए नए तरीकों के लिए MATLAB पर्यावरण (2007 ए) को पुनरारंभ करना होगा।नए जोड़े गए स्थिर तरीकों को पहचानने के लिए MATLAB कैसे प्राप्त करें?

निश्चित रूप से एक 'अपडेट' या 'रीफ्रेश' प्रकार कमांड है जिसका उपयोग मैं कर सकता हूं ताकि जब भी मैं कोई फ़ंक्शन जोड़ूं तो मुझे MATLAB वातावरण को पुनरारंभ करने की आवश्यकता नहीं है?

उत्तर

6

CLEAR को यह कॉल जारी करने वाले यह करना चाहिए:

इस के
clear classes 

एक दुर्भाग्यपूर्ण पक्ष प्रभाव है कि यह भी प्रभावी रूप से एक स्पष्ट सभी जारी करता है, जो कार्यक्षेत्र में चर के सभी के साथ-साथ साफ करता है (हालांकि, यह तब भी होगा जब आप MATLAB को बंद और पुनरारंभ करें)। वर्कस्पेस का यह समाशोधन वास्तव में एक उद्देश्य प्रदान करता है, क्योंकि यह आपके वर्ग के पुराने संस्करण के समान प्रकार के किसी भी चर को हटा देगा, जो संभावित रूप से आपकी कक्षा के नए संस्करण के साथ सही ढंग से काम नहीं करेगा।

समारोह REHASH मई काम करते हैं, लेकिन मैं यह शक है (मैं इसे वर्ग परिभाषाओं से फ़ाइल पथ के साथ और अधिक सौदों लगता है)।

+0

यह काम करता है, धन्यवाद! क्या यह एक व्यक्तिगत वर्ग पर ऐसा करना संभव है? – Brendan

+0

जहां तक ​​मुझे पता है, संशोधित किए गए अलग-अलग वर्गों को अद्यतन करने के लिए क्लीनर का उपयोग करने का कोई तरीका नहीं है। यह सब या कोई नहीं है! =) – gnovice

+1

रीहाश का प्रयास किया, कोई भी विकल्प काम नहीं करता है। सोचो कि स्पष्ट वर्ग ही एकमात्र तरीका है, चीयर्स! – Brendan

0

"स्पष्ट classname" अपनी कक्षा काम करना चाहिए की

+0

मुझे डर है यह काम नहीं करता है, यह बिना किसी त्रुटि के स्वीकार करता है लेकिन कक्षा – Brendan

+0

अपडेट नहीं की गई है [इसे MATLAB के नवीनतम संस्करणों के साथ काम करना चाहिए] (http://www.mathworks.de/help/techdoc/matlab_oop/brzqjky।एचटीएमएल) –

1

क्लियरिंग उदाहरणों का प्रयास करें। ,

foo.bar(); % Will cause error, as foo is instance of previous "MyClass" 

हालांकि:,

foo = MyClass; 

अब आप MyClass संपादित करें और नई स्थिर विधि "बार" जोड़ने लगता है:

मान लीजिए आप अपने आधार कार्यक्षेत्र में "MyClass" का एक उदाहरण है "स्पष्ट" -इंग foo पिछली कक्षा के संदर्भ को हटा देगा:

clear('foo'); 
foo = MyClass; 
foo.bar(); % this should now work. 

यह ठीक होना चाहिए यदि आप ठीक हो आपके बेस वर्कस्पेस में केवल कक्षा के एक या दो उदाहरण हैं। आप अपने आधार कार्यक्षेत्र में वर्ग के कई उदाहरण है, तो आप उन्हें स्पष्ट करने के लिए एक स्क्रिप्ट लिखने के लिए चाहते हो सकता है:

varList = whos; 
for iVar = 1:numel(varList) 
    if isequal('MyClass', varList(iVar).class) 
     clear(varlist(iVar).name); 
    end 
end 
clear('varList'); 
clear('MyClass'); 

आप अधिक स्थानों में वर्ग के उदाहरण है, तो आप स्क्रिप्ट का विस्तार करने की इच्छा हो सकती के रूप में उपयुक्त।

कक्षा नाम को साफ़ करने के लिए अंतिम कॉल केवल तभी जरूरी हो सकता है जब आप विरासत पदानुक्रम में कक्षाओं में संशोधन कर रहे हों।

+0

http://www.mathworks.de/help/techdoc/matlab_oop/brzqjky.html भी देखें जो उदाहरणों को सूचीबद्ध करता है जो आसानी से भूल सकता है (उदा। 'mlocked' फ़ंक्शंस में) –

संबंधित मुद्दे