Get all allowed values of a class property
7 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Alexander Jöhl
am 29 Mär. 2021
Kommentiert: Matt J
am 29 Mär. 2021
I have a class that has a property restricted to certain values (mustbemember several char arrays in this case). I also have an app that contains an object of this class. The app also has a dropdown. Now, I want to populate the dropdown item list with the allowed values of that restricted property. Is it possible to programmatically get a list of all the allowed values of the class?
2 Kommentare
J. Alex Lee
am 29 Mär. 2021
i don't know if this is a good way, but since it sounds like you are the one authoring the class and controlling by comparison to lists, can you just expose that list?
Akzeptierte Antwort
Matt J
am 29 Mär. 2021
Bearbeitet: Matt J
am 29 Mär. 2021
Below is a rather gymnastic way of extracting the list (I admit it would be nice if this were unnecessary):
classdef myclass %Example class
properties
prop {mustBeMember(prop,{'a','b','c'})} = 'a'
end
end
m=?myclass;
str = func2str( m.PropertyList.Validation.ValidatorFunctions{1} );
C=extractBetween(str,'{','}','Boundaries','inclusive');
selections=eval(C{1})
1 Kommentar
Weitere Antworten (1)
J. Alex Lee
am 29 Mär. 2021
Bearbeitet: J. Alex Lee
am 29 Mär. 2021
Ah, I should more fully embrace the validator mechanism. Here is a way by defining a custom validator, so in a way less hard-coded by relying on the same mechanism.
classdef myclass %Example class
properties (Constant)
AllowedPropVals = {'a','b','c'}
end
properties
prop {myclass.propValidator(prop)} = 'a'
propstat {mustBeMember(propstat,{'a','b','c'})} = 'a'
end
methods (Static , Access = private)
function propValidator(prop)
mustBeMember(prop,myclass.AllowedPropVals)
end
end
end
Then your app can simply access the constant property myclass.AllowedPropVals
3 Kommentare
J. Alex Lee
am 29 Mär. 2021
I didn't either, until I saw your question and wondered about it, so thank you!
Matt J
am 29 Mär. 2021
Funny that you can't just do,
properties
propstat {mustBeMember(propstat,myclass.AllowedPropVals)} = 'a'
end
Siehe auch
Kategorien
Mehr zu Argument Definitions finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!