matlab - 什么是null/None/nil/NULL等等?

Evg*_*eev 6 matlab

在大多数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更糟糕,因为除了抛出那个错误之外,它也不等于它自己.

使用这种模式有什么更好的选择?

Pur*_*uit 3

您可以使用该isequal函数来比较任意两个项目,而不会导致该错误。例如:

if isequal (re, false)
    %code here
end
Run Code Online (Sandbox Code Playgroud)