在同一测试中结合isfield和~isempty

时间:2013-11-28 10:38:38

标签: matlab

我已经使用结构编写了很多Matlab代码,并且我有重复出现以下问题。

我经常需要测试字段是否存在且不为空。到目前为止,我的解决方案是:

if isfield(var, 'field')
    if ~isempty(var.field)
    ...

当一个或另一个测试失败时,我需要执行相同的操作。在这些情况下,解决方案远非优雅。例如:

if isfield(var, 'field')
    if ~isempty(var.field)
       fieldOk = true;
    else
       fieldOk = false;
    end
else
    fieldOk = false;
end

更好的解决方案是同时进行两项测试。我可以写一个包含所有这些的函数,但我想知道是否有一个原生的Matlab解决方案。

1 个答案:

答案 0 :(得分:2)

怎么样:

if isfield(var, 'field') && ~isempty(var.field)
   fieldOk = true;
else
   fieldOk = false;
end

如果X && Y为真,则逻辑运算符Y只评估XHave a look here。因此,这正是您所需要的。但你可能不得不扭转局面:

if ~isempty(var.field) && isfield(var, 'field')