How to exist(obj.struct.var)?
10 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
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.
0 Kommentare
Akzeptierte Antwort
Douglas Farinelli
am 6 Sep. 2018
1 Kommentar
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
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Structures finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!