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