MATLAB: Setting object properties without returning the object using obj = obj.thefun(obj,argin)

class methodsclass propertiescoding practicesgetoopset

Hello all,
I have a syntax question. I want to be able to set or add to properties of a custom class, but without using the cumbersome "obj = setPar1(obj,argin)" syntax, where the method setPar1 is some function that determines my object's new properties based on the current properties, and argin.
Here is a clear working example of what I mean:
p = inputParser();
addParameter(p,'par1',[])
addOptional(p,'par2',[],@ischar)
parse(p,varargin{:})
Really, this is three different examples. I am modifying my object p (an inputParser) by adding optional parameters, defaults, and validation functions. Then I am applying the method parse to p, using varargin{:} as the optional input. All of these modify the internal properties of p. This is all done without using something like
p = addParameter(p,'par1',[]);
Ideally, I want something closer to:
p.addParameter('par1',[]);
but would be fine with the above working example. How do I do this?

Best Answer

What you want is a handle class. See Comparison of Handle and Value Classes for more details.
Note that if you're not proficient with matlab and just a beginner with OOP, I wouldn't recommend you start writing handle classes until you've mastered value classes. Handle classes should be the exception rather than the norm in matlab.