How to implement a setter restriction?
3 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Dominik Mattioli
el 31 de En. de 2019
Comentada: Steven Lord
el 1 de Feb. de 2019
When making a user-defined class myClass that inherits from matlab.mixin.SetGet, how can I restrict the Set for a property prop1? Say that I want to allow only true/false sets for a property.
classdef myClass < handle & matlab.mixin.SetGet
properties (Access = public)
prop1
end
methods
%% Setter restrictions
% This is what I would do if it weren't a subclass of matlab.mixin.SetGet {
function set.prop1(self,value)
% Prevent non-boolean input value sets.
if value == true
self.prop1 = true;
else
self.prop1 = false;
end
end
%}
end
end
I like the syntax of matlab.mixin.SetGet so I'd prefer to not code it this way.
5 comentarios
Walter Roberson
el 31 de En. de 2019
If you want to permit 0 and 1 as well as true and false, then I note that ismember() of 0 or 1 against true false works, and ismember() of true or false against 0 1 works, and that true == 1 and 0 == false work.
Respuesta aceptada
Steven Lord
el 1 de Feb. de 2019
If you just want to accept 0, 1, true, and false try using the mustBeNumericOrLogical property validation function. See the "Constrain Property to Numeric or Logical Values" example on that documentation page to see how to use it.
2 comentarios
Steven Lord
el 1 de Feb. de 2019
You may want to also include some of the other property validation functions to lock down not only the type of the property but also the value. mustBeGreaterThanOrEqual and mustBeLessThanOrEqual or mustBeMember are possibilities, or you could define your own validation function as described in the "Define Validation Functions" section on the page to which I linked in the first line of this comment.
Más respuestas (0)
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!