How to exist(obj.struct.var)?

19 visualizaciones (últimos 30 días)
Douglas Farinelli
Douglas Farinelli el 6 de Sept. de 2018
Comentada: Steven Lord el 6 de Sept. de 2018
exist(obj.struct.var) always returns 0 regardless if the var exists or not.

Respuesta aceptada

Douglas Farinelli
Douglas Farinelli el 6 de Sept. de 2018
isfield(obj.struct,'var')
  1 comentario
Steven Lord
Steven Lord el 6 de Sept. de 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

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Structures en Help Center y File Exchange.

Productos


Versión

R2018a

Community Treasure Hunt

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

Start Hunting!

Translated by