Note, I thought that the inputParser might actually be a handle class, rather than a _value_ object. I could see the above working if p was actually the input parser handle. As far as I can tell, this is not how the inputParser class functions (ishandle(p) returns false).
Setting object properties without returning the object using obj = obj.myfun(obj,argin)
6 views (last 30 days)
Show older comments
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?
2 Comments
Guillaume
on 14 Nov 2018
ishandle does not check if a variable is an instance of a handle class. It checks if the object is a graphic or java handle.
To check if a class is a handle class:
>> superclasses('inputParser')
Superclasses for class inputParser:
matlab.mixin.Copyable
handle
It is a handle class.
Accepted Answer
Guillaume
on 14 Nov 2018
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.
More Answers (0)
See Also
Categories
Find more on Argument Definitions in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!