सच में, मुझे नहीं पता कि आपको वास्तव में अपने पैकेजों का नाम बदलना चाहिए। ऐसा लगता है कि package in MATLAB के पीछे पूरा विचार संबंधित कार्यों और वर्गों के एक समूह को एक संग्रह में व्यवस्थित करना है जिसे आप आसानी से नाम टकराव के बारे में चिंता किए बिना "टूलबॉक्स" के रूप में उपयोग या वितरित कर सकते हैं।
इस प्रकार, पैकेजों में कार्यों और कक्षाओं को रखने के लिए अंतिम चरण है जो आप औजारों का एक अच्छा पॉलिश संग्रह बनाने के लिए करते हैं, इसलिए आपके पास वास्तव में अपने पैकेज का नाम बदलने का अधिक कारण नहीं होना चाहिए। इसके अलावा, आपको केवल पैकेज नाम कॉल करने के लिए पैकेज नाम को प्रीपेड करना होगा।
... (मैं क्या बारे में सुझाव देने के लिए कर रहा हूँ एक अच्छा विचार है अगर सोचने के लिए रोक;)) ...
हालांकि, अगर आप वास्तव में के माध्यम से जाने से बचने के लिए चाहते हैं कि आपके पैकेज और अपने फ़ंक्शन कॉल को नए पैकेज नाम से प्रीपेड करें, एक दृष्टिकोण वर्तमान में चल रहे पैकेज फ़ंक्शन के लिए पूर्ण फ़ाइल पथ प्राप्त करने के लिए MFILENAME फ़ंक्शन का उपयोग करना होगा, पैरेंट स्ट्रिंग निर्देशिका को खोजने के लिए पथ स्ट्रिंग को पार्स करें (जो "+ "), फिर पैरेंट पैकेज आयात करने के लिए परिणाम IMPORT फ़ंक्शन पर पास करें। तुम भी एक अलग समारोह packagename
(की आवश्यकता होती है कि आप भी समारोह EVALIN का उपयोग करें) में निम्न चरणों का बन सकता था:
function name = packagename
callerPath = evalin('caller','mfilename(''fullpath'')'); %# Get full path of
%# calling function
name = regexp(callerPath,'\+(\w)+','tokens'); %# Parse the path string to get
%# package directories
name = strcat([name{:}],... %# Format the output
[repmat({'.'},1,numel(name)-1) {''}]);
name = [name{:}];
end
और तुम तो अपने पैकेज कार्यों के बहुत शुरुआत में यह बन सकता था उन्हें स्वचालित रूप से अपने माता पिता शामिल करने के लिए पैकेज नामस्थान:
import([packagename '.*']);
क्या यह एक अच्छा विचार है? खैर, मुझे यकीन नहीं है कि कम्प्यूटेशनल प्रभाव क्या होंगे यदि आप हर बार कर रहे हैं तो आप एक पैकेज फ़ंक्शन कॉल करते हैं। इसके अलावा, अगर आप संकुल संकुल के भीतर नेस्ट है आप packagename
कि इस तरह दिखता है से उत्पादन प्राप्त होगा:
'mainpack.subpack.subsubpack'
और IMPORT करने के लिए कॉल तत्काल माता पिता पैकेज subsubpack
शामिल केवल होगा।यदि आप अन्य मूल पैकेज भी शामिल करना चाहते हैं, तो आपको उपरोक्त स्ट्रिंग से अंतिम पैकेज को अनुक्रमिक रूप से हटा देना होगा और शेष स्ट्रिंग को आयात करना होगा।
संक्षेप में, यह एक बहुत ही स्वच्छ समाधान नहीं है, लेकिन यह संभव अपने पैकेज एक छोटे से इस तरह से नाम बदलने के लिए आसान बनाने के लिए है। हालांकि, मैं अभी भी सुझाव दूंगा कि उपकरण के मूल सेट को बनाने की प्रक्रिया में अंतिम चरण के रूप में पैकेज के निर्माण को देखना बेहतर होगा, जिस स्थिति में नामकरण एक असंभव परिदृश्य होना चाहिए और पैकेज नाम के साथ प्रीपेड पैकेज फ़ंक्शन कॉल करना चाहिए केवल एक बार किया जाना है।
कॉलिंग * आयात * आपकी फ़ाइल की शुरुआत में नौकरी करना चाहिए। अधिक जानकारी के लिए प्रलेखन [आयात] (http://www.mathworks.de/help/techdoc/ref/import.html) देखें। – zellus
@zellus: धन्यवाद, मैंने पहले से ही कोशिश की है - मुझे पैकेज में _every_ फ़ंक्शन आयात करने के लिए 'आयात mypackage। * 'शामिल करना होगा (आयात फ़ंक्शन वर्कस्पेस में हैं, वैश्विक नहीं), और जब मैं नाम बदलने का निर्णय लेता हूं तो इसे बदलना होगा पैकेज :( –