Oops, I did saw this one. Sorry -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of David Hershberger Sent: vrijdag 28 november 2008 17:39 To: Flash Coders List Subject: Re: [Flashcoders] passing on ... args
Ooh! Ooh! I just wrote this a few days before you asked. Here's my solution: public function call( rpcName: String, responder: Responder, rpcArgs: Array ): void { // NetConnection.call() takes a variable number of arguments after the // RPC call name and the responder. To make a pass-through call from // one such function (this function) to another (NetConnection.call()), // we must make an array of ALL arguments to the target function and // then call apply() on the Function object we wish to call (_nc.call). var callArgs: Array = [rpcName, responder].concat( rpcArgs ); // Function.apply() also wants a "this" reference, so we pass _nc in too. _nc.call.apply( _nc, callArgs ); } As Meinte says, it isn't worth the mess, so I don't use "..." in my own code. The contents of the function would look exactly the same if you changed the call signature to match NetConnection's: public function call( rpcName: String, responder: Responder, ... rpcArgs ): void And then it's a proper pass-through. With Latcho's example: testargs( "a","b",{z:'zz'},[1,2,3],"c" ) private function testargs(... argsA):void { trace("#args_A:", argsA.length) /// traces: #args_A: 5 passingArgs.apply(this, argsA) } public function passingArgs(... argsB):void { trace("#args_B:",argsB.length) /// traces: #args_B: 5 for(var i:int=0;i<argsB.length;i++) { trace(argsB[i]); } }; If passingArgs() isn't a member function of some class, I'm not sure what you pass as apply()'s first argument, possibly null? Dave On 11/28/08, Meinte van't Kruis <[EMAIL PROTECTED]> wrote: > > I think I tried something with casting to array or using Function.apply, > I'm > pretty sureFunction.apply or call does the trick > > after messing around with it I decided it wasnt worth the mess and used > array's instead.. > > > On Fri, Nov 28, 2008 at 4:18 PM, Latcho <[EMAIL PROTECTED]> wrote: > > > > > Hi List, > > > > How can I pass a variable amount off function arguments to a next > function > > ? > > Below the way I tried and which fails. While passing them they get > combined > > I'd like to remain 5 variables for args_B and not a single string. > > Stijn > > > > CODE: > > > > testargs( "a","b",{z:'zz'},[1,2,3],"c" ) > > > > private function testargs(... argsA):void > > { > > trace("#args_A:", > argsA.length) /// > > traces: #args_A: 5 > > passingArgs(argsA) > > } > > > > public function passingArgs(... argsB):void > > { > > trace("#args_B:",argsB.length) /// > > traces: #args_B: 1 for(var i:int=0;i<argsB.length;i++) { > > trace(argsB[i]); } // which traces a string: a,b,[object Object],1,2,3,c > > }; > > > > > > Latcho > > > > > > > > > > _______________________________________________ > > Flashcoders mailing list > > Flashcoders@chattyfig.figleaf.com > > http://chattyfig.figleaf.com/mailman/listinfo/flashcoders > > > > > > > -- > M.A. van't Kruis > http://www.malatze.nl/ > > _______________________________________________ > Flashcoders mailing list > Flashcoders@chattyfig.figleaf.com > http://chattyfig.figleaf.com/mailman/listinfo/flashcoders > _______________________________________________ Flashcoders mailing list Flashcoders@chattyfig.figleaf.com http://chattyfig.figleaf.com/mailman/listinfo/flashcoders No virus found in this incoming message. Checked by AVG - http://www.avg.com Version: 8.0.176 / Virus Database: 270.9.11/1817 - Release Date: 28-11-2008 8:17 _______________________________________________ Flashcoders mailing list Flashcoders@chattyfig.figleaf.com http://chattyfig.figleaf.com/mailman/listinfo/flashcoders