Passing Function results to another function

4 次查看(过去 30 天)
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

采纳的回答

Matt J
Matt J 2013-1-23
编辑:Matt J 2013-1-23
Multiple output arguments must be explicitly requested and assigned:
[A,B]=test;
test2(A,B)
or
[AB{1:2}]=test;
test2(AB{:}),
  2 个评论
Matt J
Matt J 2013-1-23
or you could return your arguments in a vector
function ab = test( )
ab=[5,6]
end
function test2( ab)
numel(ab)
end
Walter Roberson
Walter Roberson 2013-1-23
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.)

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Testing Frameworks 的更多信息

标签

产品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by