假设你是一个新的程序员,你做的事情就像......
%...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和feval可重写.在这种情况下,您可以使用函数句柄来强制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函数的实际句柄.