From help-request at octave dot org Wed Dec 22 15:58:41 2004 Subject: Re: Variable num args. question From: Geraint Paul Bevan To: D Goel CC: help at octave dot org Date: Wed, 22 Dec 2004 22:09:22 +0000 -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 D Goel wrote: | hi, | | Inside function f1, how do i make a call to f2 with all the arguments | that f1 was given? with the num. of arguments being variable? | | The lisp equivalent being: | | (defun f1 (&rest args) | (some work ...) | (apply 'f2 args)) | You can use the varargin variable to capture variable numbers of arguments: function y = f1( varargin ) ~ f2( varargin{:} ) endfunction function y = f2( arg1, arg2, arg3, arg4 ) ~ switch nargin ~ case 4 ~ arg1, arg2, arg3, arg4 ~ case 3 ~ arg1, arg2, arg3 ~ case 2 ~ arg1, arg2 ~ case 1 ~ arg1 ~ endswitch ~ y = nargin endfunction octave> f1( 2, 5, 7 ) arg1 = 2 arg2 = 5 arg3 = 7 y = 3 ans = 3 If you don't want to capture all of the arguments, you can name some of them before using varagin: function y = f1( arg1, varargin ) ~ f2( varargin{:} ) endfunction octave> f1( 2, 5, 7 ) arg1 = 5 arg2 = 7 y = 2 ans = 2 - -- Geraint Bevan http://homepage.ntlworld.com/geraint.bevan -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) iEYEARECAAYFAkHJ8JIACgkQcXV3N50QmNOu6ACffUQXk9y5/tu8EotvJ2Ap08Tv IqAAnigT59c4Ckm4F6/DdJbW597aP7ux =Cni3 -----END PGP SIGNATURE----- ------------------------------------------------------------- Octave is freely available under the terms of the GNU GPL. Octave's home on the web: http://www.octave.org How to fund new projects: http://www.octave.org/funding.html Subscription information: http://www.octave.org/archive.html -------------------------------------------------------------