Passing Function results to another function
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
I recently ran into some behavior I though was unintuitive - given the code below, nargin prints out 1. Why isn't the second argument being passed to test2? Is there a standard way to get around this issue?
test2(test())
1
function [a,b] = test( )
a=5;
b=6;
end
function test2( a,b)
nargin
end
0 Kommentare
Akzeptierte Antwort
Matt J
am 23 Jan. 2013
Bearbeitet: Matt J
am 23 Jan. 2013
Multiple output arguments must be explicitly requested and assigned:
[A,B]=test;
test2(A,B)
or
[AB{1:2}]=test;
test2(AB{:}),
2 Kommentare
Matt J
am 23 Jan. 2013
or you could return your arguments in a vector
function ab = test( )
ab=[5,6]
end
function test2( ab)
numel(ab)
end
Walter Roberson
am 23 Jan. 2013
Right. This is a design feature of MATLAB, that when it sees that the result of a function is being passed to another function, all but the first output is discarded. This is fairly tricky to get around (I did see someone find a way once using deal() but I'm not convinced it would work.)
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Software Development Tools finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!