How to exist(obj.struct.var)?

10 ビュー (過去 30 日間)
Douglas Farinelli
Douglas Farinelli 2018 年 9 月 6 日
コメント済み: Steven Lord 2018 年 9 月 6 日
exist(obj.struct.var) always returns 0 regardless if the var exists or not.

採用された回答

Douglas Farinelli
Douglas Farinelli 2018 年 9 月 6 日
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 Center および File ExchangeStructures についてさらに検索

製品


リリース

R2018a

Community Treasure Hunt

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

Start Hunting!

Translated by