登录论坛

查看完整版本 : 如何在MATLAB中创建“空”匿名函数?


poster
2019-12-10, 16:49
在MATLAB中进行调试时,我使用匿名函数进行诊断打印。例如,

debug_disp = @(str) disp(str); debug_disp('Something is up.') ... debug_disp = @(str) disp([]); % diagnostics are now hidden 用disp([])当作“小东西”对我来说有点脏。有更好的选择吗?显而易见的(?)方法不起作用:

debug_disp = @(str) ; 我认为,这可能对其他功能语言应用程序有用,而不仅仅是诊断打印。


回答:
您可以在代码库中添加常规的虚无功能。

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 然后,您可以在不希望出现任何操作的地方使用函数句柄,而不是匿名函数。

debug_disp = @NOP; 现在,它有点自我记录,明确表明您打算什么也不做,而不是抓住了disp()的错误输入。在源代码中将显而易见,此外,当您在调试器中并检查包含函数句柄的变量时,它将显示为“ @NOP”,它可能比匿名句柄更具可读性。通过查看NOP的呼叫者列表,您可以在“概要文件报告”输出中获得所有已完成操作的列表。

您还可以使用Matlab的内置@deal,在退化的情况下,它什么也不做,什么也不返回。



更多&回答... (https://stackoverflow.com/questions/1904972)