查看单个帖子
旧 2019-12-10, 16:49   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 如何在MATLAB中创建“空”匿名函数?

在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,在退化的情况下,它什么也不做,什么也不返回。



更多&回答...
poster 当前离线   回复时引用此帖