foo(...args) [Was: super.apply(this, arguments)]
# Lars Hansen (18 years ago)
There's an open ticket on it that proposes just that, neither accepted or rejected, really. The super(...args) seems like an important use case.
# Brendan Eich (18 years ago)
On Mar 6, 2008, at 10:53 AM, Lars Hansen wrote:
And Jon Zeppieri kindly implemented this spread (Tucker, have I been
misnaming it as "splat"?) operator in the RI. I just commented again
in the ticket.
Did the use of ... in the parameter list (in the tail position only, I
assume) of a function call to 'spread' an array of arguments get
accepted into the language? Is the proper way to trampoline all my
constructor args to my superclass going to be:
class Foo extends Bar { function Foo(...rest) : super(...rest) { ... } ...
?
Did the use of ... in the parameter list (in the tail position only, I assume) of a function call to 'spread' an array of arguments get accepted into the language? Is the proper way to trampoline all my constructor args to my superclass going to be: class Foo extends Bar { function Foo(...rest) : super(...rest) { ... } ... ? On 2007-12-21, at 00:39 EST, Brendan Eich wrote: > On Dec 20, 2007, at 4:01 PM, Jeff Dyer wrote: > >> The original Netscape ES4 proposal had syntax for passing arguments >> as an >> array. (Waldemar are you listening?) IIRC it used triple dots like >> this: >> >> foo(...args) >> >> to mean use the elements of 'args' as positional arguments of foo. We >> dropped this from AS3 for lack of evidence for its need. > > Wow. I like this, never saw it in Waldemar's proposals, but of > course Python and other languages have something akin. This is the > missing solution that satisfies the demand for compositional new and > apply, as well as other apply-like use-cases (see the thread on this > very list, inspired by Python, starting here). > > Presumably you could supply one or more positional actual parameters > before the "packed" parameter, as Python allows: > > >>> def foo(a,b,c): > ... print a,b,c > ... > >>> foo(1,2,3) > 1 2 3 > >>> a = [1,2,3] > >>> foo(*a) > 1 2 3 > >>> b = [2,3] > >>> foo(1,*b) > 1 2 3 > > This beats a super.apply special form any day!