PDA

查看完整版本 : 如何在不使用临时变量的情况下从函数中获取第二个返回值?


poster
2019-12-10, 20:48
我有一个返回两个值的函数,如下所示:

[ab] = myfunc(x) 有没有一种方法可以在不使用临时变量且不更改函数的情况下获得第二个返回值?

我正在寻找的是这样的:

abs(secondreturnvalue(myfunc(x)))

回答:

除非迫切需要这样做,否则我建议不要这样做。代码的清晰度会受到影响。将输出存储在临时变量中,然后将这些变量传递给另一个函数将使您的代码更整洁,并且在此概述了实现此目的的不同方法: 如何优雅地忽略MATLAB函数的某些返回值? (https://stackoverflow.com/questions/747296/how-to-elegantly-ignore-some-return-values-of-a-matlab-function) 。

但是,如果您确实想要或需要这样做,那么我想到的唯一可行的方法是创建自己的函数secondreturnvalue 。这是一个更通用的示例,称为nth_output :

function value = nth_output(N,fcn,varargin) [value{1:N}] = fcn(varargin{:}); value = value{N}; end 您可以通过将以下内容作为输入来调用它:1)所需的输出参数编号,2) myfunc的函数句柄 (http://www.mathworks.com/help/techdoc/ref/function_handle.html) ,以及3)需要传递给myfunc任何输入参数:

abs(nth_output(2,@myfunc,x))

更多&回答... (https://stackoverflow.com/questions/3710466)