MATLAB中等效的逗号运算符?


JavaScript和C以及其他一些语言中,有一个逗号运算符,可以让你编写像(e1,e2)这样的东西,其中e1和e2是表达式,并让它评估e1,丢弃结果,然后评估e2.这在转换源代码时通常很有用.

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

a = f() + g()

我想以某种方式这样做:

a = (disp('about to call f'), f()) + (disp('about to call g'), g())

这将打印即将调用f,然后调用f,然后打印即将调用g,然后调用g.但我不想改变代码的结构或引入新的语句.那可能吗?

最佳答案 我想你可以写一个函数:

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)
点赞