From help-octave-request at bevo dot che dot wisc dot edu Fri Sep 18 13:29:19 1998 Subject: RE: Multi-return functions as arguments From: (Ted Harding) To: "John W. Eaton" Cc: help-octave at bevo dot che dot wisc dot edu Date: Fri, 18 Sep 1998 18:59:19 +0100 (BST) On 18-Sep-98 John W. Eaton wrote: > On 18-Sep-1998, (Ted Harding) wrote: >| As a simple example, suppose I have functions >| >| function [x1,x2] = F2(u) ... >| function [x1,x2,x3] = F3(u) ... >| >| and I want to write a single wrapper function G, to be called either >| as >| >| y = G(F2(u)) intended to be equivalent to y = G(x1,x2) >| >| or as >| >| y = G(F3(u)) intended to be equivalent to y = G(x1,x2,x3) >| >| where what should happen inside G depends on its nargin. > > But in either of the two cases above, nargin for G will be 1. > > It seems that what you really want to do is have F2 and F3 return > lists, and then have G accept a list argument and do different things > depending on the length of the list. Yes, essentially that's exactly it. > Unfortunately, there is no list data type in Octave 2.0.x, but there > will be one in the next major release (it is currently available in > the 2.1.x development releases). Thanks for the info -- looking forward to the next release! Meanwhile (though I guess from the above the answer is probably "no") is there any variant of "y=G(F3(u))" whereby G can access all three of the values returned by F3, instead of just the "top" one, i.e. x1? (The only way I can think of is to use "F3" as argument and use "eval" inside G: y = G("F3",u) -- better than nothing, but with a tendency to be slow. Even then, it's not obvious how to get at the returned values inside G.) With my thanks, Ted. -------------------------------------------------------------------- E-Mail: (Ted Harding) Date: 18-Sep-98 Time: 18:59:19 --------------------------------------------------------------------