MATLAB中等效的逗号运算符?

时间:2014-02-28 07:01:53

标签: matlab

在JavaScript和C以及其他一些语言中,有一个逗号运算符,可以让您编写(e1, e2)之类的内容,其中e1e2是表达式,并让它评估{{ 1}},放弃结果,然后评估e1。这在转换源代码时通常很有用。

有没有办法在MATLAB中做类似的事情?例如,如果我有这段代码:

e2

我想以某种方式这样做:

a = f() + g()

这会打印a = (disp('about to call f'), f()) + (disp('about to call g'), g()) ,然后拨打about to call f,然后打印f,然后拨打about to call g。但我不想改变代码的结构或引入新的语句。这可能吗?

1 个答案:

答案 0 :(得分:2)

我想你可以写一个函数:

function varargout = display_then_run(fun, varargin)
    fprintf('about to call %s\n', func2str(fun));
    [varargout{1:nargout}] = fun(varargin{:});
end

现在

a = display_then_run(@f) + display_then_run(@g)