如何在MATLAB中创建一个“空”匿名函数?

时间:2009-12-15 03:23:00

标签: matlab anonymous-function

在MATLAB中调试时,我使用匿名函数进行诊断打印。如,

debug_disp = @(str) disp(str);
debug_disp('Something is up.')
...
debug_disp = @(str) disp([]);
% diagnostics are now hidden

使用disp([])作为“狼吞虎咽”似乎对我来说有点脏;有更好的选择吗?显而易见的(?)方法不起作用:

debug_disp = @(str) ;

我认为这对其他功能语言应用程序非常有用,而不仅仅是诊断打印。

5 个答案:

答案 0 :(得分:15)

您可以在代码库中添加常规的无操作功能。

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

答案 1 :(得分:10)

我认为disp([])disp('')完全可以接受。它没有返回任何东西,也没有副作用。

答案 2 :(得分:3)

如果您只是寻找“无所事事”命令来替换匿名函数的主体,我可能会选择DRAWNOW

debug_disp = @(str) drawnow;

这将简单地刷新事件队列并更新图形,而不是显示任何文本。

答案 3 :(得分:3)

这是一个无所事事的匿名功能。它什么都不做,并返回一个空数组,你可以忽略它。你需要在它后加一个分号来抑制disp。

debug_disp = @(str) [];

disp([])也应该正常工作。无论你喜欢哪种风格。

答案 4 :(得分:2)

尝试debug_disp = @(str)(1);