क्या यह संभव है कि मैटलैब में एक से अधिक वर्ग कन्स्ट्रक्टर को परिभाषित किया जाए? यदि हां, तो कैसे?एकाधिक वर्ग कन्स्ट्रक्टर Matlab
उत्तर
प्रत्येक वर्ग में एक निर्माता होता है। हालांकि ... निर्माता varargin
पर आधारित किसी भी संख्या और तर्कों को स्वीकार कर सकता है।
तो, जावा में एक डिफ़ॉल्ट तीसरा तर्क का विकल्प तो आप इस (java documentation के आधार पर उदाहरण) की तरह कुछ लिख सकता है प्रदान करने के लिए:
public Bicycle(int startCadence, int startSpeed, int startGear) {
gear = startGear;
cadence = startCadence;
speed = startSpeed;
}
public Bicycle(int startCadence, int startSpeed) {
gear = 1;
cadence = startCadence;
speed = startSpeed;
}
मैटलैब में आप लिख सकते हैं
methods (Access = public)
function self = Bicycle(varargin)
if nargin>2
gear = varargin{3};
else
gear = 1;
end
cadence = varargin{1};
speed = varargin{2};
end
end
नहीं। ओओपी matlab में रचनाकार अन्य भाषाओं की तुलना में बहुत प्रतिबंधित हैं। यह दस्तावेज एएफएआईके में स्पष्ट रूप से नहीं बताया गया है कि आपके पास कई रचनाकार हो सकते हैं, लेकिन यह पूरे दस्तावेज़ में एकवचन में कक्षा के निर्माता को संदर्भित करता है।
http://www.mathworks.co.uk/help/techdoc/matlab_oop/brd2m9e-1.html
प्रत्येक वर्ग केवल एक निर्माता हैं, और प्रत्येक मीटर फ़ाइल केवल एक वर्ग परिभाषा हो सकते हैं।
यदि आप इनपुट के आधार पर मामूली अंतर के साथ कक्षा चाहते हैं, तो आप उन गुणों का उपयोग कर सकते हैं जो वर्ग विधियों द्वारा मान्यता प्राप्त स्विच को परिभाषित करते हैं। यदि आप इनपुट के आधार पर बहुत अलग वर्ग चाहते हैं, तो आप generateClass
-फंक्शन बना सकते हैं जो अलग-अलग फ़ाइलों में परिभाषित एक या दूसरी कक्षा को कॉल करेगा। बेशक, यदि इन अलग-अलग वर्गों में बहुत सी सामान्य विधियां और गुण हैं, तो आप एक सामान्य सुपरक्लास में सबक्लास के रूप में दोनों बना सकते हैं।
अच्छी पोस्ट ... लेकिन मूल पोस्टर को नोट करें: वास्तव में विरासत के साथ वास्तव में सावधान रहें। यह आपको अपने आप को लटकने के लिए बहुत सारी रस्सी देता है। अगर आप बस चाहते हैं तो इसका सहारा न लें एक डिफ़ॉल्ट कन्स्ट्रक्टर और अन्य रचनाकार जो चर को प्रारंभ कर सकते हैं। इस कार्यक्षमता को प्राप्त करने के लिए varargin का उपयोग करें। – learnvst
समान वर्ग, केवल प्रारंभिक प्रक्रिया की प्रक्रिया अलग है। मुझे लगता है कि मैं इन दो तरीकों से एक उदाहरण बनाने के लिए आवश्यक सभी पैरामीटर पास करूंगा , और एक मो फिर पैरामीटर जो निर्माण के तरीके को परिभाषित करेगा। गंदा लेकिन जल्दी .. उदास, मेरा समाधान इतना समझ में आ रहा था .. आप पर शर्म की बात है! – bsmca
@bsmca: आप हमेशा (स्थैतिक) विधियों को परिभाषित कर सकते हैं जो निर्माण के दो अलग-अलग तरीकों को लागू करते हैं, और फिर आप उनमें से किसी एक को सामान्य कन्स्ट्रक्टर से कॉल करते हैं। बस सुनिश्चित करें कि आप केवल ऑब्जेक्ट को पहले या बाद में बनाते हैं, लेकिन इन तरीकों के अंदर नहीं। – Jonas
पीछा कार्यों का उत्तर, लेकिन फ़ंक्शन से परिचित कोई उपयोगकर्ता यह नहीं देख सकता कि कितने तर्क की आवश्यकता है या वे क्या हैं। मैं इस सिफारिश करेंगे:।।
methods (Access = public)
function self = Bicycle(startCadence, startSpeed, startGear)
if nargin>2
gear = startGear;
else
gear = 1;
end
cadence = startCadence;
speed = startSpeed;
end
end
अब आप टाइप "साइकिल (" और इंतजार आप कम से कम तीन तर्क देख सकते हैं दूसरी संभावना है, हालांकि नहीं दिखाया गया है यह संभव है (साजिश के लिए उदाहरण के लिए), लेकिन मैं डॉन यह नहीं पता कि यह कैसे करें।
क्या यह वास्तव में आपके लिए काम करता है? मुझे "पर्याप्त इनपुट तर्क त्रुटि नहीं है" (MATLAB: minrhs) यदि मैं सभी तर्क (2014a और बी पर) प्रदान नहीं करता हूं। यह "मुक्त" कार्यों पर काम करता प्रतीत होता है, लेकिन रचनाकार/वर्ग के सदस्य नहीं। –
- 1. प्रत्येक MATLAB वर्ग
- 2. किसी वर्ग 'कन्स्ट्रक्टर
- 3. संकलित समय वर्ग कन्स्ट्रक्टर हस्ताक्षर
- 4. Matlab
- 5. जहां टी: एकाधिक वर्ग
- 6. कन्स्ट्रक्टर
- 7. matlab
- 8. MATLAB में मैं एकाधिक असाइनमेंट कैसे करूं?
- 9. क्लास कन्स्ट्रक्टर अन्य वर्ग के साथ हस्तक्षेप
- 10. अनसुलझा बाहरी (अमूर्त वर्ग कन्स्ट्रक्टर/विनाशक)
- 11. MATLAB
- 12. एक पैरामीटर के साथ एकाधिक कन्स्ट्रक्टर
- 13. MATLAB
- 14. संकलन एकाधिक वर्ग (कंसोल) जावा
- 15. एकल या एकाधिक भंडार वर्ग?
- 16. Grails डोमेन वर्ग: एकाधिक स्तंभों
- 17. MATLAB: MATLAB
- 18. matlab
- 19. Matlab
- 20. MATLAB
- 21. कन्स्ट्रक्टर
- 22. कन्स्ट्रक्टर
- 23. कन्स्ट्रक्टर
- 24. एकाधिक वंशानुक्रम आधार वर्ग से अलग व्युत्पन्न वर्ग
- 25. कैसे MATLAB में MATLAB
- 26. कन्स्ट्रक्टर
- 27. कन्स्ट्रक्टर
- 28. matlab
- 29. MATLAB
- 30. MATLAB
ध्यान दें कि आप एक if-statement के अंदर "स्वयं" नहीं बना सकते हैं, इसलिए पहली बार जब आप "स्वयं" को कुछ भी असाइन करते हैं तो उसे पहले-बाद में आना होगा। – Jonas
इस समाधान के साथ समाप्त हुआ :) tnx! – bsmca