如何重载清除

How to overload clear

使用函数重载 clear() 很容易。但是如何访问上游函数(从中调用 clear )的工作空间来清除工作空间? builtin('clear') 只会清除重载函数的工作区。

function ret = someFun(a,b)
    ret = a + b;
    clear
    ret = 1;
end

function clear()
    persistent boring
    if isempty(boring), boring = 0; end
    boring = boring + 1;
    builtin('clear')
end

屏幕截图:调用重载的 clear 函数后上游函数的工作区

使用 evalin'caller' 选项。也就是说,替换你的行

builtin('clear')

来自

evalin('caller', 'builtin(''clear'')')

这将清除调用函数工作区中的所有变量

如果您想清除 Matlab 基础工作区中的所有变量,请使用'base' 选项:

evalin('base', 'builtin(''clear'')')