help-octave
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: Multi-return functions as arguments


From: Ted Harding
Subject: RE: Multi-return functions as arguments
Date: Fri, 18 Sep 1998 18:59:19 +0100 (BST)

On 18-Sep-98 John W. Eaton wrote:
> On 18-Sep-1998, (Ted Harding) <address@hidden> 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) <address@hidden>
Date: 18-Sep-98                                       Time: 18:59:19
--------------------------------------------------------------------



reply via email to

[Prev in Thread] Current Thread [Next in Thread]