How to exist(obj.struct.var)?

10 Ansichten (letzte 30 Tage)
Douglas Farinelli
Douglas Farinelli am 6 Sep. 2018
Kommentiert: Steven Lord am 6 Sep. 2018
exist(obj.struct.var) always returns 0 regardless if the var exists or not.

Akzeptierte Antwort

Douglas Farinelli
Douglas Farinelli am 6 Sep. 2018
isfield(obj.struct,'var')
  1 Kommentar
Steven Lord
Steven Lord am 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

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Structures finden Sie in Help Center und File Exchange

Produkte


Version

R2018a

Community Treasure Hunt

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

Start Hunting!

Translated by