如何在MATLAB中删除变量"clear"

Fre*_*ick 18 matlab clear

假设你是一个新的程序员,你做的事情就像......

%...la da da
%...programming away
if such && such
    clear = 1;
else 
    clear = 0;
end 
Run Code Online (Sandbox Code Playgroud)

或者以其他方式,为变量clear赋值.

有没有办法"清除" clear

clearvars不起作用.单击工作区变量并手动单击删除确实有效,但我认为这是作弊.

Buc*_*orn 27

这样做:

builtin('clear','clear')
Run Code Online (Sandbox Code Playgroud)

注意:请记住避免此类操作以保持代码清晰.只有在您想要进行的确切操作时才进行覆盖.否则,如果您忘记(或者如果另一个人使用您的代码并且没有意识到)您可能会覆盖清除(或任何其他)功能,则可能会导致未来的错误.例如,您可以轻松命名此变量doClear.

  • 非常好!一些建议,不要尝试`builtin = 1`,除非你想重新启动Matlab,之后就不能再分配变量了. (8认同)

Eit*_*n T 8

任何名称,甚至builtinfeval可重写.在这种情况下,您可以使用函数句柄来强制MALTAB将语句解释为函数调用:

clear = str2func('clear');
clear('clear')
Run Code Online (Sandbox Code Playgroud)

显然,str2func也可以超越!:)然而,存在一个类似的解决方案(灵感来自Loren的文章),它创建了一个单独的m文件,它执行相同的操作:

function clearclear()
    assignin('caller', 'clear', @clear);
Run Code Online (Sandbox Code Playgroud)

在主工作区中调用此功能应该可以clear('clear')安全地执行.

第二种解决方案利用了m文件不"看到" clear主工作区中的变量这一事实,因此可以正确访问clear函数的实际句柄.