假设我有一个函数foo
可以在给定输入的情况下返回三个值:
function [a,b,c] = foo(input)
b
变量的计算c
需要很长时间,所以有时我可能希望忽略它们的计算foo
。如果我想忽略这两个计算,我只需像这样调用函数:
output1 = foo(input);
然后包括nargout
在foo
:
if nargout == 1
% Code to calculate "a" only
else
% Code to calculate other variables
如果我想计算最后一个输出,而不是第二个,就会出现问题。在这种情况下,我的函数调用将是:
[output1,~,output3] = foo(input);
现在,如果我使用nargout
withinfoo
检查函数调用中有多少输出,它将始终返回3
,因为波浪号运算符 ( ~
) 被视为有效输出。因此,我不能nargout
用来确定是否计算第二个输出,b
,在 内foo
。
有没有其他方法可以做到这一点?即,是否可以检查函数调用的哪些输出从函数本身中被丢弃?