2016-03-19 14 views
0

Bir işlev için çoklu çıkış dönüşü nasıl geçmeli? Ben çok çıkış kodunuz varsa

function [a b] = foo() 
    a = 1; 
    b = 2; 
end 

biz sadece 1.

değilim

function test(a) 
    a 
end 

test(foo()); 

O yazdırır, doğrudan başka bir fonksiyona foo() 'in sonucu uzatabilir Elbette, testte, argümanını nasıl yok edebiliriz. Bu bir dizi değil. Yapmamız gerekecek mi?

[x, y] = foo(); 
test(x, y); 
+0

'bar (foo()); Sadece ilk dönen çıktı barda geçirilen görünüyor @Rashid' – Rashid

+0

sadece iyi çalışması gerekir. –

+0

Her ikisi de geçer. Fonksiyonunuz çok basit, a = 1: 5', b = a.^2' gibi bir şey deneyin. – Rashid

cevap

4

Hayır, başka yolu yoktur.

Bunun bir varyasyonu, hücre dizileri ve virgülle ayrılmış listeler kullanmaktır. Örnek:

C = cell(1,2); 
[C{:}] = foo(); 
bar(C{:}) 

sadece gerçek sayısı ile yukarıda 2 yerine, girdi/çıktı bağımsız değişkenler için herhangi bir sayıda, yukarıda kodu yeniden olabilir.

C = cell(1,n); 
[C{:}] = foo(); % equivalent to [C{1},C{2},...,C{n}] = foo() 
bar(C{:})  % equivalent to bar(C{1},C{2},...,C{n})