在JavaScript和C以及其他一些语言中,有一个逗号运算符,可以让您编写(e1, e2)
之类的内容,其中e1
和e2
是表达式,并让它评估{{ 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
。但我不想改变代码的结构或引入新的语句。这可能吗?
答案 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)