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