假设您是一些新程序员,并且您正在执行类似...
%...la da da
%...programming away
if such && such
clear = 1;
else
clear = 0;
end
或者以其他方式,为变量分配clear
一个值。
有没有办法“清除” clear
?
clearvars
不起作用。单击工作区变量并手动单击删除确实有效,但我认为这是作弊。
这将做到:
builtin('clear','clear')
注意:请记住避免此类操作以保持代码清晰。仅在您要执行的确切操作时才进行覆盖。否则,如果您忘记(或者如果其他人使用您的代码但没有意识到)您已经覆盖了 clear(或任何其他)函数,则可能会导致未来的错误。例如,您可以轻松地命名此变量doClear
。
任何名称,甚至builtin
可以feval
被覆盖。在这种情况下,您可以使用函数句柄来强制 MALTAB 将语句解释为函数调用:
clear = str2func('clear');
clear('clear')
显然,str2func
也可以被覆盖!:) 但是,存在一个类似的解决方案(受Loren 的文章启发),它创建了一个单独的 m 文件来做同样的事情:
function clearclear()
assignin('caller', 'clear', @clear);
在主工作区中调用此函数应该可以让您clear('clear')
安全地进行操作。
第二种解决方案利用了 m 文件没有“看到”clear
主工作区中的变量这一事实,因此可以clear
正确访问函数的实际句柄。
一种非直观的方式是
clear = rand(1000,500,700);
pack
这会产生以下警告:
警告:变量“clear”不能保存到版本早于 7.3 的 MAT 文件中。要保存此变量,请使用 -v7.3 开关。跳过...
它也遇到了可以分配pack
为变量的相同问题。
有趣的问题!我发现很难找到一种以编程方式执行此操作的方法(除了@TryHard 建议的方法)
这是我想出的,虽然它比clear
:
!matlab &
exit
请注意,如果您想一次在命令行中键入此内容,则需要在两者之间使用 shift+enter。