How to exist(obj.struct.var)?

10 views (last 30 days)
exist(obj.struct.var) always returns 0 regardless if the var exists or not.

Accepted Answer

Douglas Farinelli
Douglas Farinelli on 6 Sep 2018
isfield(obj.struct,'var')
  1 Comment
Steven Lord
Steven Lord on 6 Sep 2018
If you're not sure if the obj variable is a struct or has a field named struct, you can call isfield twice.
y = isfield(obj, 'struct') && isfield(obj.struct, 'var');
The first isfield call will return false if obj is not a struct or is a struct that does not have a field named struct. Only if the first isfield call returns true will the short-circuit && operator cause the second isfield call to be evaluated. In fact, that documentation page includes an example (Change Structure Field Value) that is somewhat related to this question.
obj = 42; % Not a struct
y1 = isfield(obj, 'struct') && isfield(obj.struct, 'var') % false
obj = struct('abc', 'def'); % struct but without the correct field
y2 = isfield(obj, 'struct') && isfield(obj.struct, 'var') % false
obj = struct('struct', struct('var', 'std'));
y3 = isfield(obj, 'struct') && isfield(obj.struct, 'var') % true

Sign in to comment.

More Answers (0)

Categories

Find more on Structures in Help Center and File Exchange

Products


Release

R2018a

Community Treasure Hunt

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

Start Hunting!