Get all allowed values of a class property
14 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Alexander Jöhl
el 29 de Mzo. de 2021
Comentada: Matt J
el 29 de Mzo. de 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 comentarios
J. Alex Lee
el 29 de Mzo. de 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?
Respuesta aceptada
Matt J
el 29 de Mzo. de 2021
Editada: Matt J
el 29 de Mzo. de 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 comentario
Más respuestas (1)
J. Alex Lee
el 29 de Mzo. de 2021
Editada: J. Alex Lee
el 29 de Mzo. de 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 comentarios
J. Alex Lee
el 29 de Mzo. de 2021
I didn't either, until I saw your question and wondered about it, so thank you!
Matt J
el 29 de Mzo. de 2021
Funny that you can't just do,
properties
propstat {mustBeMember(propstat,myclass.AllowedPropVals)} = 'a'
end
Ver también
Categorías
Más información sobre Argument Definitions en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!