如何超载清除

时间:2015-06-04 16:46:28

标签: matlab octave built-in

使用函数重载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函数后上游函数的工作空间 workspace of the upstream function after calling the overloaded clear function

1 个答案:

答案 0 :(得分:4)

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

  

builtin('clear')

通过

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

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

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

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