Como determinar se uma saída de uma chamada de função não é usada?
Diga eu tenho uma funçãofoo
que pode retornar três valores com uma entrada:
function [a,b,c] = foo(input)
Os cálculos das variáveisb
ec
levar muito tempo, então às vezes eu posso querer ignorar o seu cálculo dentrofoo
. Se eu quiser ignorar os dois cálculos, simplesmente chamo a função assim:
output1 = foo(input);
e depois incluirnargout
dentrofoo
:
if nargout == 1
% Code to calculate "a" only
else
% Code to calculate other variables
O problema ocorre se eu quiser calcular a última saída, mas não a segunda. Nesse caso, minha chamada de função seria:
[output1,~,output3] = foo(input);
Agora se eu usarnargout
dentrofoo
para verificar quantas saídas estão na chamada de função, ela sempre retornará3
porque o operador til (~
) é considerado um resultado válido. Portanto, não posso usarnargout
para determinar se deve ou não calcular o segundo resultado,b
dentro defoo
.
Existe alguma outra maneira de fazer isso? Ou seja, é possível verificar quais saídas de uma chamada de função são descartadas de dentro da própria função?