2010-02-22 21 views
7

में एक गणना के नाम प्राप्त करने के लिए मैं एक enumerated प्रकार को परिभाषितकैसे MATLAB में MATLAB

classdef(Enumeration) Color < Simulink.IntEnumType 
    enumeration 
    RED(0), 
    GREEN(1), 
    BLUE(2), 
    end 
end 

मैं इसे प्रदान कर सकते हैं:

>> disp(x) 
    RED 
:

>> x = Color.RED  
x = 
    RED 

मैं इस तरह यह प्रदर्शित कर सकते हैं

या इस तरह

>> x.display() 
x = 
    RED 

मैं उस नाम ("लाल") तक एक स्ट्रिंग के रूप में कैसे पहुंच सकता हूं?

s = x.toString() 

या

s = tostring(x) 

जो दोनों के काम नहीं करते:

दूसरे शब्दों में मैं की तरह कुछ के लिए देख रहा हूँ।

उत्तर

8

आप उपयोग कर सकते हैं:

classdef(Enumeration) Color < int32 
enumeration 
    RED(0) 
    GREEN(1) 
    BLUE(2) 
end 

methods 
    function s = char(obj) 
    s = ['Color ' num2str(obj)]; 
    %# or use a switch statement.. 
    end 

    function disp(obj) 
    disp(char(obj)) 
    end 
end 
end 

और अब:

» char(Color.BLUE) 
ans = 
Color 2 
+0

ध्यान दें:

» str = char(Color.RED) str = RED » class(str) ans = char 

तुम भी डिफ़ॉल्ट व्यवहार को ओवरराइड कर सकते हैं के बाद से मैं न simulink है, मैं परीक्षण किया परिभाषा का उपयोग करने के ऊपर: 'classdef (गणना) रंग Amro

+0

क्या आपने परीक्षण किया था कि वास्तव में 'str' क्या था? मैं अभी इसका परीक्षण नहीं कर सकता, लेकिन मुझे लगता है कि यह समेकित प्रकार के * पूर्णांक प्रतिनिधित्व * को 'char' (यानी' char (0) ') में परिवर्तित कर सकता है। – gnovice

+1

@gnovice: यह अपेक्षित – Amro

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