為什么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作為可選變數的函式中進行語法檢查,這個工件迫使我要么改變我的函式的外觀,要么不檢查輸出的數量。
uj5u.com熱心網友回復:
從檔案中:nargout回傳一個負值來標記varargout函式宣告中的位置。例如,對于宣告為的函式
[y, varargout] = example_fun(x)
nargout將給出-2,這意味著第二個“輸出”實際上是varargout,它表示一個逗號分隔的串列,可以包含任意數量的輸出。
nargout給出-1匿名函式,因為它們可以回傳任意數量的輸出。也就是說,他們的簽名等價于
varargout = example_fun(x)
匿名函式如何回傳多個輸出?正如這里所指出的,通過將實際作業委托給另一個可以的功能。例如:
>> 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輸出定義。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/334329.html
