在
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)