सबसे पहले, आप
validParam = isa(x,'Foo') || isempty(x);
हालांकि साथ हमारे स्थिति की जांच कर सकते हैं, सबसे अच्छा तरीका स्थिर विधि empty
का उपयोग कर एक खाली वर्ग बनाने के लिए किया जाएगा:
e = Foo.empty(0);
isa(x,'Foo')
और परिणाम है :
इसा (Foo.empty (0), 'फू')
ans =
1
वैसे, यह भी एक अन्य मामले के लिए उपयोगी है - मान लीजिए आप गतिशील रूप से विकसित करने के लिए करना चाहते हैं और Foo
ऑब्जेक्ट की श्रेणी। आप एक सेल सरणी का उपयोग कर सकते हैं, लेकिन फिर आप प्रकार की सुरक्षा खो देते हैं। इसके बजाय, Foo.empty()
बनाएं।
फिर भी, इस विधि का उपयोग करने में एक चेतावनी है। यह विरासत को संभालने के लिए पर्याप्त स्मार्ट नहीं है -
Bar
Foo
से प्राप्त होने वाली कक्षा बनें।
classdef Bar < Foo
end
और तुम Foo
वस्तुओं की एक नई सरणी का आवंटन: कोई गुणों के साथ
x = Foo.empty(0)
एक्स =
0x0 खाली फू।
तरीके
फिर Bar
जोड़ने का प्रयास:
x(end+1) = Bar()
??? निम्न त्रुटि बार से Foo में परिवर्तित हो गई: ==> Foo का उपयोग करने में त्रुटि बहुत सारे इनपुट तर्क।
तो इस मामले के लिए एकमात्र कामकाज सेल सरणी का उपयोग करना है।
संपादित करें (1): ऐसा लगता है कि Matlab आदेश विरासत को संभालने के लिए एक special class जोड़ लिया है: एक अमूर्त वर्ग में प्रावधान है कि है
विवरण
matlab.mixin.Heterogeneous विषम सरणी के गठन के लिए का समर्थन करें। एक विषम सरणी ऑब्जेक्ट्स की सरणी है जो उनके विशिष्ट वर्ग में भिन्न होती है, लेकिन सभी रूट क्लास के व्युत्पन्न या उदाहरण हैं। मूल वर्ग सीधे matlab.mixin से प्राप्त होता है। विषम।
स्रोत
2012-01-18 19:08:25