在大多数OO语言中,变量可以指向对象,它们也可以具有空值,这非常方便.
在Matlab中,我有一个解析命令的函数,然后返回一个单元格数组,或者false如果它失败则返回(等于零 - 这是另一种常见模式):
function re = parse(s)
...
if (invalid)
re = false;
return;
end
end
Run Code Online (Sandbox Code Playgroud)
问题是,当我检查结果时,它会给出一个错误:
re = parse(s);
if (false == re)
Undefined function 'eq' for input arguments of type 'cell'.
Run Code Online (Sandbox Code Playgroud)
我已经编写了一个函数来检查它没有错误:strcmp('logical', class(re)) && false == re但是在代码的热区域使用它似乎很慢,如果我必须将这个函数添加到我正在编写的每个M文件中也很不方便.
使用NaN更糟糕,因为除了抛出那个错误之外,它也不等于它自己.
使用这种模式有什么更好的选择?
您可以使用该isequal函数来比较任意两个项目,而不会导致该错误。例如:
if isequal (re, false)
%code here
end
Run Code Online (Sandbox Code Playgroud)