gpt4 book ai didi

matlab - 为什么 nargout 返回 -1?在这种情况下如何获得正确数量的函数输出?

转载 作者:行者123 更新时间:2023-12-04 13:05:31 27 4
gpt4 key购买 nike

为什么 nargout在这种情况下返回 -1?

function test

fun=@(a)helper_fun(a,2);

[x,y]=fun(1);
x, % 1
y, % 2
nargout(fun), % -1

end

function [c,d] = helper_fun(a,b)

c=a;
d=b;

end

是否有替代方法来提取 fun 的正确数量的输出变量?

我希望对一个将 function_handle 作为可选变量的函数进行语法检查,而这个工件迫使我要么改变我的函数必须看起来的样子,要么不检查输出数量。

最佳答案

来自documentation : nargout 返回一个负值来标记varargout的位置在函数声明中。例如,对于声明为

的函数
[y, varargout] = example_fun(x)

nargout 会给出-2,意思是第二个“输出”实际上是varargout,代表一个逗号分隔的列表,可以包含任意数量的输出。

nargout 为匿名函数提供 -1,因为它们可以返回任意数量的输出。也就是说,他们的签名相当于

varargout = example_fun(x)

匿名函数如何返回多个输出?如图所示here ,通过将实际工作委托(delegate)给另一个可以的功能。例如:

>> f = @(x) find(x);
>> [a, b, c] = f([0 0 10; 20 0 0])
a =
2
1
b =
1
3
c =
20
10
>> nargout(f)
ans =
-1

比较一下

>> f = @find;
>> nargout(f)
ans =
3

现在结果是 3,因为 find 定义了(最多)3 输出。

关于matlab - 为什么 nargout 返回 -1?在这种情况下如何获得正确数量的函数输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69665065/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com