How to implement a setter restriction?
    2 views (last 30 days)
  
       Show older comments
    
    Dominik Mattioli
      
 on 31 Jan 2019
  
    
    
    
    
    Commented: Steven Lord
    
      
 on 1 Feb 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 Comments
  Walter Roberson
      
      
 on 31 Jan 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.
Accepted Answer
  Steven Lord
    
      
 on 1 Feb 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 Comments
  Steven Lord
    
      
 on 1 Feb 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.
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!