MATLAB Answers

Setting object properties without returning the object using obj = obj.myfun(obj,argin)

조회 수: 3(최근 30일)
D. Plotnick
D. Plotnick 14 Nov 2018
댓글: D. Plotnick 14 Nov 2018
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
Guillaume
Guillaume 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.

댓글을 달려면 로그인하십시오.

채택된 답변

Guillaume
Guillaume 14 Nov 2018
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.
  댓글 수: 1
D. Plotnick
D. Plotnick 14 Nov 2018
Thanks, I brain-farted on ishandle.
No, I try to stay away from handle class objects unless I am doing UI work. Thanks again.

댓글을 달려면 로그인하십시오.

추가 답변(0개)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by