Wil*_*son 15 matlab anonymous-function
在MATLAB中调试时,我使用匿名函数进行诊断打印.例如,
debug_disp = @(str) disp(str);
debug_disp('Something is up.')
...
debug_disp = @(str) disp([]);
% diagnostics are now hidden
Run Code Online (Sandbox Code Playgroud)
使用disp([])"狼吞虎咽"似乎对我来说有点脏; 有更好的选择吗?明显的(?)方法不起作用:
debug_disp = @(str) ;
Run Code Online (Sandbox Code Playgroud)
我认为这可以用于其他功能语言应用程序,而不仅仅是诊断打印.
And*_*nke 16
您可以在代码库中添加常规的"无操作"功能.
function NOP(varargin)
%NOP Do nothing
%
% NOP( ... )
%
% A do-nothing function for use as a placeholder when working with callbacks
% or function handles.
% Intentionally does nothing
Run Code Online (Sandbox Code Playgroud)
然后你可以使用函数句柄而不是匿名函数,无论你想要什么都不用.
debug_disp = @NOP;
Run Code Online (Sandbox Code Playgroud)
现在它有点自我记录,明确表示你打算什么都不做,而不是为disp()抓取错误的输入.这将在源代码中显而易见,此外,当您在调试器中并检查保存函数句柄的变量时,它将显示为"@NOP",这可能比匿名句柄更具可读性.您可以通过查看NOP的呼叫者列表,在"配置文件报告"输出中获取所有已删除操作的列表.
你也可以使用Matlab的内置@deal,它在退化的情况下什么也不做,什么都不返回.