How to exist(obj.struct.var)?

10 次查看(过去 30 天)
exist(obj.struct.var) always returns 0 regardless if the var exists or not.

采纳的回答

Douglas Farinelli
isfield(obj.struct,'var')
  1 个评论
Steven Lord
Steven Lord 2018-9-6
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

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Structures 的更多信息

产品


版本

R2018a

Community Treasure Hunt

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

Start Hunting!

Translated by