Case insensitive enumeration class
Afficher commentaires plus anciens
Hi,
How does one create a case insensitive enumeration class?
So that one could call it as:
aRed = colourEnum.RED;
aRed = colourEnum.red;
aRed = colourEnum.ReD;
I would also like to confirm that enumerations must follow variable naming conventions. Ie you can't have an enum that is:
enumclass.A/B
Am I right in this?
Regards, Phillip
Réponse acceptée
Plus de réponses (1)
Sean de Wolski
le 19 Sep 2016
You could use a containers.Map to use non-MATLAB variable names if you want:
mapper = containers.Map('enumclass.A/B','A')
mapper('enumclass.A/B')
3 commentaires
Phillip
le 19 Sep 2016
Sean de Wolski
le 20 Sep 2016
Modifié(e) : Sean de Wolski
le 20 Sep 2016
Hi Phillip,
What I was suggesting won't work the way you have it above. For best looks, what you're doing is probably best. I was thinking more like a factory function to generate the enumerations given any key. disp can be overloaded to make it look right. This is probably not a good idea, but it is possible.
e = genEnum('Hello World')
e =
Hello World
Function
function enumObj = genEnum(key)
mapper = containers.Map({'enumclass.A/B','Hello World'},{'A','B'});
enum = mapper(key);
enumObj = EnumClass.(enum);
end
And
classdef EnumClass
enumeration
A
B
end
methods
function disp(obj)
mapper = containers.Map({'A','B'},{'enumclass.A/B','Hello World'});
label = mapper(char(obj));
disp(label)
end
end
end
Sean de Wolski
le 20 Sep 2016
Why do you want to do this? What's the bigger picture?
Catégories
En savoir plus sur Get Started with MATLAB dans Centre d'aide et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!