如何重载清除
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'')')
使用函数重载 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'')')